當Firefox最近更新到版本6時,我正在處理的網站遭到嚴重破壞。瀏覽到任何頁面,而不哈希標籤時Firefox 6無限頁面刷新帶有散列標籤的頁面
該網站正常運行,但如果你嘗試導航到一個頁面的哈希標籤(例如#test
),或刷新頁面一次應用的哈希標籤,頁面刷新儘可能快地無限。
這是一個一年半前創建的Asp.Net MVC 2網站。
當Firefox最近更新到版本6時,我正在處理的網站遭到嚴重破壞。瀏覽到任何頁面,而不哈希標籤時Firefox 6無限頁面刷新帶有散列標籤的頁面
該網站正常運行,但如果你嘗試導航到一個頁面的哈希標籤(例如#test
),或刷新頁面一次應用的哈希標籤,頁面刷新儘可能快地無限。
這是一個一年半前創建的Asp.Net MVC 2網站。
原來,這是舊版本的MicrosoftAjax.js(與Asp.Net MVC 2一起安裝的版本)的問題。
打開MicrosoftAjax.debug.js文件並檢查文件版本號。如果這是您的問題,此文件的頂部將如下所示:
// Name: MicrosoftAjax.debug.js
// Assembly: System.Web.Extensions
// Version: 4.0.0.0
// FileVersion: 4.0.20526.0
這是包含此錯誤的版本。截至撰寫本文時的最新文件版本是4.0.30205.0。 升級到最新版本,問題消失。正如在Nathan Fox的評論中提到的,我從Microsoft cdn獲得了最新版本,更具體地說是minified和debug版本。
爲了好奇,我在javascript文件中找到了問題。
馬車版本包括:
if ((Sys.Browser.agent === Sys.Browser.Firefox) && window.location.hash && (!window.frameElement || window.top.location.hash)) {
window.history.go(0);
}
在新版本以下哪種已得到糾正:
if ((Sys.Browser.agent === Sys.Browser.Firefox) && window.location.hash && (!window.frameElement || window.top.location.hash)) {
(Sys.Browser.version < 3.5) ?
window.history.go(0) :
location.hash = this.get_stateString();
}
刪除MicrosoftAjax.js或MicrosoftAjax.debug.js可能會有幫助,但只是更換當前版本爲http://www.asp.net/ajaxlibrary/CDNAjax4.ashx的文件也可以完成這項工作!
哇。謝謝你。前幾天我遇到了這個問題,並沒有想到javascript會成爲問題......幸運的是,我發現了這個問題,而且現在它已經修復了。 – smdrager
感謝您解讀這一點,這節省了我大量的時間! –
您可以在http://www.asp.net/ajaxlibrary/CDNAjax4.ashx的MS CDN頁面上找到最新的.js文件的鏈接。 –