2011-08-18 79 views
41

當Firefox最近更新到版本6時,我正在處理的網站遭到嚴重破壞。瀏覽到任何頁面,而不哈希標籤時Firefox 6無限頁面刷新帶有散列標籤的頁面

該網站正常運行,但如果你嘗試導航到一個頁面的哈希標籤(例如#test),或刷新頁面一次應用的哈希標籤,頁面刷新儘可能快地無限。

這是一個一年半前創建的Asp.Net MVC 2網站。

回答

65

原來,這是舊版本的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獲得了最新版本,更具體地說是minifieddebug版本。

爲了好奇,我在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(); 
} 
+4

哇。謝謝你。前幾天我遇到了這個問題,並沒有想到javascript會成爲問題......幸運的是,我發現了這個問題,而且現在它已經修復了。 – smdrager

+0

感謝您解讀這一點,這節省了我大量的時間! –

+0

您可以在http://www.asp.net/ajaxlibrary/CDNAjax4.ashx的MS CDN頁面上找到最新的.js文件的鏈接。 –