Firefox 6无限页面刷新带有哈希标签的页面

当Firefox最近更新到版本6时,我正在工作的一个网站遭到严重破坏。

当浏览到没有散列标签的任何页面时,该网站运行正常,但是如果你尝试导航到带有散列标签(例如#test )的页面,或者在应用散列标签后刷新页面,页面会尽快刷新无限地。

这是大约一年半前创build的一个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)的评论中所提到的,我从微软的cdn中得到了最新的版本,更具体地说是缩小版和debugging版。

为了好奇,我在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中的当前版本replace文件也可以完成这项工作!;