Javascript Firefox';加载脚本时出错';在FF2中加载Google分析

Javascript Firefox';加载脚本时出错';在FF2中加载Google分析,javascript,firefox,google-analytics,Javascript,Firefox,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给出的错误消息是:“加载脚本时出错” 附加说明:该网站引用

我正在处理的项目使用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给出的错误消息是:“加载脚本时出错”

附加说明:该网站引用了其他几个javascript文件。但是,analytics引用是外部域的唯一引用,也是页面底部的唯一脚本引用,就在结束正文标记之前


有没有其他人遇到过这个问题,或者知道可能是什么问题?谢谢

这是一个相当随机的猜测,但我想知道用户是否正在使用像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]
我正在使用以下检查忽略OneError处理程序中的此错误:

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;
}

我们也遇到了同样的问题,在检查CDN日志之后,我们发现当脚本返回HTTP状态为“304未修改”时,Firefox会触发onerror事件,因此缓存命中。事实上,Firefox(在撰写本文时使用Firefox 12进行了测试)似乎会触发除“200OK”之外的所有HTTP状态的onerror事件。其他浏览器在我们的实验中表现不同:Chrome(19)仅在“需要407代理身份验证”时触发onerror,Opera(12)在100、101、204、4xx和5xx时触发onerror。

对于那些可能使用Airbrake/Hoptoad的浏览器,Airbrake支持评论可能会有所帮助:,@rampr我认为忽略所有这些浏览器并不完全安全。但到目前为止,我有很多“错误加载脚本”错误,并且没有一个真正的问题,所以我宁愿忽略它们。