2012-07-28 96 views
5

我有一個網頁,用戶可以通過AJAX顯示條款和條件而無需重新加載頁面。這本身不是問題,但是,我也試圖推動歷史狀態。IE歷史記錄推送狀態

在大多數瀏覽器中工作正常,IE除外。出於某種莫名其妙的原因,在那裏,內容通過AJAX加載,而且,在前一頁打開一個新標籤頁。我怎樣才能解決這個問題?

您可以在此網頁上看到示例(http://galaxy-battle.de),請嘗試單擊「加入」框中的「T & Cs」。

+0

你可以告訴我們在jsfiddle中執行該操作的代碼,因此更容易發現錯誤並進行調試嗎? – 2012-07-28 22:52:26

+0

哦,對不起,只是讀它。要做一點。 – arik 2012-07-29 20:16:59

+0

對不起,但我無法使pushState命令在jsfiddle上工作,它們似乎阻止了它。 – arik 2012-07-29 22:51:44

回答

2

老,但仍然當前問題討論一些解決方法? 。我只想說我會建議而不是嘗試模擬IE上的pushState。

取而代之的是,你可以使用一個特徵檢測:

  1. 如果history.pushState不爲空(瀏覽器支持pushState的),你使用它,並用漂亮的JavaScript

  2. 如果history.pushState加載內容爲空(瀏覽器不支持pushState),您更改url /關注鏈接並完成整頁更改

當然,這意味着IE < = 9個用戶不會擁有其他用戶擁有的所有酷動畫。但我想問的問題是:你是否想看到包含#的網站的網絡鏈接?

用戶可能認爲您的應用很有用,並在網絡上粘貼鏈接。這很酷,因爲它帶給你一些谷歌果汁。現在,如果該用戶使用IE並使用history.js,則用戶將粘貼包含散列的鏈接。

這將破壞您的應用程序的公共頁面的正確索引,並且也會看起來很醜。我個人的觀點是,爲IE用戶製作js動畫或燈箱並不值得這些權衡。

+1

不幸的是業務需求並不總是在開發人員的直接控制之下。 – jaydel 2015-08-03 12:43:15