从另一个子域记录javascript错误

从另一个子域记录javascript错误,javascript,error-logging,Javascript,Error Logging,Firefox和Chrome中的window.onerror似乎放弃了真正的错误消息/位置,并且总是在出现问题的脚本位于与页面本身不同的域时传递“Script error.”,“”,0。我有一个站点,它为页面和css/js分别提供了www和static子域,这使得错误记录变得毫无用处。有什么方法可以正确记录这些错误吗?在js文件的顶部,尝试执行以下操作 document.domain = "yourdomain.com" 目前似乎没有解决这个问题的办法(我在Mozilla IRC频道上问过)

Firefox和Chrome中的
window.onerror
似乎放弃了真正的错误消息/位置,并且总是在出现问题的脚本位于与页面本身不同的域时传递
“Script error.”,“”,0
。我有一个站点,它为页面和css/js分别提供了
www
static
子域,这使得错误记录变得毫无用处。有什么方法可以正确记录这些错误吗?

在js文件的顶部,尝试执行以下操作

document.domain = "yourdomain.com"

目前似乎没有解决这个问题的办法(我在Mozilla IRC频道上问过)

我已经提交了这些bug报告来跟踪这个问题。如果您对这方面的最佳解决方案有任何意见,请插话:


真正的解决方案是在所有代码中使用适当的
尝试{…}catch(e){…}
块。然而,我明白这可能并不总是一种选择


如果您无法控制这些其他脚本,那么下一个最佳选择是通过JSONP将它们作为字符串加载,然后使用
eval()
(是的,我知道)将它们“注入”到当前页面中。这样,您仍然可以获得使用静态域的好处(无Cookie、CDN选项、其他并发请求等),但JS最终将位于页面的请求域中。

您应该尝试禁用同源策略,猜测是因为它数据被条带化了。有关如何查看的信息。@Prusse:我可以在用于开发的浏览器上执行此操作(尽管这没有多大意义,因为我在浏览器上看到了错误),但这里的重点是捕获访问者浏览器中出现的错误。请验证您建议的答案是否有效(它没有)在发布之前,我也需要控制JSONP的脚本,因为我必须将其转换为字符串并将其传递给回调<代码>评估ing也可能有一些小的性能缺陷,例如无法延迟脚本加载。Try-catch似乎是严格意义上更好的解决方案,但对于第三方脚本来说仍然有点痛苦。从bug报告开始,我找到了一个很好的解释,解释了为什么这些神秘的错误消息首先是必需的(这以前一直困扰着我)。谢谢你!根据上面的错误,现在已经解决了吗?所以这个问题的答案是在脚本上使用正确的CORS头。