42

当 Firefox 最近更新到第 6 版时,我正在处理的一个网站严重崩溃。

该网站在浏览到没有哈希标记的任何页面时正常运行,但如果您尝试导航到带有哈希标记的页面(例如#test)或在应用哈希标记后刷新页面,则页面会尽可能快地无限刷新。

这是大约一年半前创建的一个 Asp.Net MVC 2 站点。

4

2 回答 2

67

事实证明,这是旧版本的 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();
 }
于 2011-08-18T17:52:53.003 回答
3

删除 MicrosoftAjax.js 或 MicrosoftAjax.debug.js 可能会有所帮助,但只需将文件替换为http://www.asp.net/ajaxlibrary/CDNAjax4.ashx中的当前版本即可!

于 2012-06-13T15:47:20.757 回答