Firefox'加载脚本时出错'加载FF2中的Google Analytics

问题描述:

我正在处理的项目使用window.onerror事件处理程序来报告用户问题。我注意到一位似乎无法加载Google Analytics脚本的单个用户。我们的网站没有看到很多流量,所以我不确定这是多么广泛,但到目前为止,它似乎只影响一个用户。他的用户代理是:“Mozilla/5.0(Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17)Gecko/20080829 Firefox/2.0.0.17”。
Firefox给出的错误消息是:“加载脚本时出错”。Firefox'加载脚本时出错'加载FF2中的Google Analytics

补充说明:该网站引用了其他几个JavaScript文件。但是,分析引用是唯一一个外部域,并且是页面底部的唯一脚本引用,位于关闭正文标记之前。

有没有其他人跑过这个,或者有什么想法可能是什么问题?谢谢!

这是一个相当随意的猜测,但我想知道用户是否使用像NoScript这样的附加组件来控制脚本执行,并且不允许Google Analytics脚本运行。我知道这是可能的,因为这是我所做的:)我不知道这是否会显示为您看到的错误。

我有一个网站超过80页,所有使用JavaScript错误捕获。我的网站每天服务超过2000页,每天从Firefox浏览器收到大约10次“错误加载脚本”脚本错误。它开始真的让我烦恼,我开始相信这是Firefox的一个问题。

我可以打折NOSCRIPT的建议,因为脚本加载在我的网页头没有NOSCRIPT标签。

我可以打折'外部域'的建议,因为我有两个网站遭受这个问题,在这两种情况下JS库文件都位于网站自己的服务器上。

我已经仔细检查了每个库文件和使用JavaScript Lint的网页,并且发现了脚本错误和可疑的脚本技术。所有这些问题都得到了纠正,但这并没有为“错误加载脚本”问题提供任何解决方法。

我的页面会加载一些没有这个问题的JavaScript库文件,唯一的区别就是文件的大小。大多数文件都在5KB以下,但问题文件是17KB。

库文件的大小可能是问题吗?

啊!

我相信这个问题已经解决了很长时间了......但是对于任何一个在这个页面上绊倒的人:当外部脚本无法加载时,这个错误是由firefox触发的(很容易找到在源代码中触发这个代码的代码)。我们在我们的网站上发现了这些错误,结果发现我们正在为该脚本返回404,所以我建议将您的日志视为此错误的一个可能来源。

在所有脚本完成加载之前,在Firefox中留下页面时会发生此问题。所以我认为忽略错误是安全的。

您在Firefox错误控制台中看不到此错误,但可以通过将警报绑定到window.onerror事件来使其可见。然后,你将能够看到警告框的时间和少量得到错误控制台以下错误:

[11:35:57.428] uncaught exception: [Exception... "prompt aborted by user" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: resource:///components/nsPrompter.js :: openTabPrompt :: line 462" data: no] 

我使用下面的检查在我的onError处理器忽略这个错误:

if (navigator.userAgent.search('Firefox') != -1 && message === 'Error loading script') { 
    // Firefox generates this error when leaving a page before all scripts have finished loading 
    return; 
} 
+0

对于那些可能使用Airbrake/Hoptoad的Airbrake支持评论可能会有帮助:[Overriding Hoptoad.notify](http://help.airbrake.io/discussions/questions/509-bypass-specific-errors), [用于过滤错误的测试代码](http://help.airbrake.io/discussions/suggestions/335-error-loading-script-errors-in-firefox) – Sarge 2012-03-11 15:05:17

我们有同样的问题和检查我们的CDN登录后,我们发现,Firefox的触发onerror事件时的脚本,HTTP状态“304未修改”,所以缓存命中返回。实际上,Firefox(在本文写作时用Firefox 12进行测试)似乎会触发除“200 Ok”以外的所有HTTP状态的错误事件。其他浏览器在我们的实验中表现不同:Chrome(19)仅在需要'407 Proxy Authentication'时触发了错误,而在100,101,204,4xx和5xx上触发了Opera(12)。