![15e2cd5d56a3221015d36fb0cc771b0f.png](https://img-blog.csdnimg.cn/img_convert/15e2cd5d56a3221015d36fb0cc771b0f.png)
Script Error对于前端开发者相信都不陌生,而且由于没有具体错误堆栈和代码行列号,成为可能是最神秘的错误之一。
下面介绍Script Error产生的原理和解决办法。
1、Script Error是如何产生的
- 跨域资源引用
假如:abc.com
下的页面引用了属于 http://def.com
(CDN) 的 demo.js
文件。
若运行中demo.js
的 run()方法
内部报了一个异常,那么前端的错误捕获脚本,只会检测到一个 script error
的异常。
这是由于浏览器基于安全考虑
故意隐藏了其它域JS文件抛出的具体错误信息。这样可以有效避免敏感信息无意中被第三方(不受控制的)脚本捕获到,因此,浏览器只允许同域下的脚本捕获具体的错误信息。
具体可以参考WEBKIT源码:
bool ScriptExecutionContext::sanitizeScriptError(String& errorMessage, int& lineNumber, String& sourceURL)
{
KURL targetURL = completeURL(