13

我正在处理的项目使用 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 文件。但是,分析引用是唯一指向外部域的引用,也是页面底部的唯一脚本引用,就在结束正文标记之前。

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

4

5 回答 5

9

在所有脚本完成加载之前在 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;
}
于 2011-10-07T10:32:53.317 回答
2

我有一个包含 80 多个页面的网站,所有页面都使用 JavaScript 错误捕获。我的网站每天提供超过 2000 个页面,我每天从 Firefox 浏览器收到大约十个“错误加载脚本”脚本错误。它开始让我非常恼火,我开始确信这是 Firefox 中的一个问题。

我可以忽略 NOSCRIPT 建议,因为脚本加载在我的页面头部,没有 NOSCRIPT 标记。

我可以忽略“外部域”的建议,因为我有两个站点遇到此问题,并且在这两种情况下,JS 库文件都位于站点自己的服务器上。

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

我的页面确实加载了几个没有这个问题的 JavaScript 库文件,唯一的区别是文件的大小。大多数文件小于 5KB,但问题文件为 17KB。

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

啊!

于 2008-10-30T23:22:16.560 回答
2

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

于 2008-10-10T18:36:37.310 回答
1

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

于 2012-06-25T21:55:24.920 回答
0

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

于 2011-07-15T02:24:14.163 回答