Asp.net mvc 2 Firefox 6无限页面刷新,带有哈希标记的页面

Asp.net mvc 2 Firefox 6无限页面刷新,带有哈希标记的页面,asp.net-mvc-2,firefox,microsoft-ajax,Asp.net Mvc 2,Firefox,Microsoft Ajax,当Firefox最近更新到版本6时,我正在开发的一个网站严重崩溃 当浏览到没有哈希标记的任何页面时,网站正常运行,但如果您尝试导航到带有哈希标记的页面(例如,#test)或在应用哈希标记后刷新页面,页面将以尽可能快的速度无限刷新 这是一个大约一年半前创建的Asp.NETMVC2站点 事实证明,这是旧版本MicrosoftAjax.js(随Asp.Net MVC 2一起安装)的一个问题 打开MicrosoftAjax.debug.js文件并检查文件版本号。如果这是您的问题,则此文件的顶部将如下所示

当Firefox最近更新到版本6时,我正在开发的一个网站严重崩溃

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


这是一个大约一年半前创建的Asp.NETMVC2站点

事实证明,这是旧版本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升级到最新版本,问题就会消失。正如在的评论中提到的,我从中获得了最新版本,更具体地说是和版本

出于好奇,我在javascript文件中找到了这个问题

buggy版本包括:

 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();
 }
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可能会有所帮助,但只需将文件替换为中的当前版本也可以

哇。谢谢你。几天前我遇到了这个问题,没想到javascript会成为问题。。。幸运的是,我发现了这个问题,并大声呼喊,现在问题已经解决了。谢谢你解决了这个问题,这节省了我很多时间!您可以在MS CDN页面上找到指向最新.js文件的链接。我有完全相同的症状,但我使用jQuery而不是MicrosoftAjax.debug.js。你知道有什么解决方案吗?这个问题/解决方案是专门针对MicrosoftAjax的。您不必使用它,但如果它在页面上被引用,则会发生此问题。如果它根本没有被引用,那么我不知道=)