【发布时间】:2012-06-13 23:47:20
【问题描述】:
当 Firefox 最近更新到版本 6 时,我正在处理的一个网站严重崩溃。
网站在浏览到任何页面时正常运行没有哈希标签,但如果您尝试导航到带有哈希标签的页面(例如#test)或刷新页面一次哈希标签应用后,页面会尽可能快地无限刷新。
这是一个大约一年半前创建的 Asp.Net MVC 2 站点。
【问题讨论】:
标签: asp.net-mvc-2 firefox microsoft-ajax
当 Firefox 最近更新到版本 6 时,我正在处理的一个网站严重崩溃。
网站在浏览到任何页面时正常运行没有哈希标签,但如果您尝试导航到带有哈希标签的页面(例如#test)或刷新页面一次哈希标签应用后,页面会尽可能快地无限刷新。
这是一个大约一年半前创建的 Asp.Net MVC 2 站点。
【问题讨论】:
标签: asp.net-mvc-2 firefox microsoft-ajax
原来,这是旧版本的 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 获得了最新版本,更具体地说是minified 和debug 版本。
出于好奇,我在 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();
}
【讨论】:
删除 MicrosoftAjax.js 或 MicrosoftAjax.debug.js 可能会有所帮助,但只需将文件替换为 http://www.asp.net/ajaxlibrary/CDNAjax4.ashx 的当前版本即可!
【讨论】: