我有一個網頁,用戶可以通過AJAX顯示條款和條件而無需重新加載頁面。這本身不是問題,但是,我也試圖推動歷史狀態。IE歷史記錄推送狀態
在大多數瀏覽器中工作正常,IE除外。出於某種莫名其妙的原因,在那裏,內容通過AJAX加載,而且,在前一頁打開一個新標籤頁。我怎樣才能解決這個問題?
您可以在此網頁上看到示例(http://galaxy-battle.de),請嘗試單擊「加入」框中的「T & Cs」。
我有一個網頁,用戶可以通過AJAX顯示條款和條件而無需重新加載頁面。這本身不是問題,但是,我也試圖推動歷史狀態。IE歷史記錄推送狀態
在大多數瀏覽器中工作正常,IE除外。出於某種莫名其妙的原因,在那裏,內容通過AJAX加載,而且,在前一頁打開一個新標籤頁。我怎樣才能解決這個問題?
您可以在此網頁上看到示例(http://galaxy-battle.de),請嘗試單擊「加入」框中的「T & Cs」。
IE9及以下doesn't support pushState。在調用以下行時您有例外
window.history.pushState(null,null,pathFullPage);
SCRIPT438:對象不支持屬性或方法「pushState的」 TERMS_AND_CONDITIONS,行62字符21
你可能可能會看起來很有趣的關於在Emulate/polyfill history.pushstate() in IE
老,但仍然當前問題討論一些解決方法? 。我只想說我會建議而不是嘗試模擬IE上的pushState。
取而代之的是,你可以使用一個特徵檢測:
如果history.pushState
不爲空(瀏覽器支持pushState的),你使用它,並用漂亮的JavaScript
如果history.pushState
加載內容爲空(瀏覽器不支持pushState),您更改url /關注鏈接並完成整頁更改
當然,這意味着IE < = 9個用戶不會擁有其他用戶擁有的所有酷動畫。但我想問的問題是:你是否想看到包含#
的網站的網絡鏈接?
用戶可能認爲您的應用很有用,並在網絡上粘貼鏈接。這很酷,因爲它帶給你一些谷歌果汁。現在,如果該用戶使用IE並使用history.js,則用戶將粘貼包含散列的鏈接。
這將破壞您的應用程序的公共頁面的正確索引,並且也會看起來很醜。我個人的觀點是,爲IE用戶製作js動畫或燈箱並不值得這些權衡。
不幸的是業務需求並不總是在開發人員的直接控制之下。 – jaydel 2015-08-03 12:43:15
你可以告訴我們在jsfiddle中執行該操作的代碼,因此更容易發現錯誤並進行調試嗎? – 2012-07-28 22:52:26
哦,對不起,只是讀它。要做一點。 – arik 2012-07-29 20:16:59
對不起,但我無法使pushState命令在jsfiddle上工作,它們似乎阻止了它。 – arik 2012-07-29 22:51:44