Asp.net-Mvc-2

Firefox 6 無限頁面刷新,帶有雜湊標籤的頁面

  • August 18, 2011

當 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獲得了最新版本,更具體地說是縮小版和調試版。

出於好奇,我在 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();
}

引用自:https://stackoverflow.com/questions/7110023