2016-03-30 98 views
0

我有两个测试文件,test1.htmltest2.html。我有test1.html如下:奇怪的双窗口。错误行为

<script> 
window.onerror = function (message, file, lineNumber, columnNumber, error) { 
    console.log(message, file, lineNumber, columnNumber, error); 
}; 

asdf // Trigger error 
</script> 

其打印(如预期)

Uncaught ReferenceError: asdf is not defined file:///Users/justin/Desktop/test1.html 6 1 ReferenceError: asdf is not defined(…) 

我有test2.html如下:

<script src='test.js'></script> 

其中test.js是:

window.onerror = function (message, file, lineNumber, columnNumber, error) { 
    console.log(message, file, lineNumber, columnNumber, error); 
}; 

asdf 

其打印(未如预期)

Script error. 0 0 null 

我如何捕获错误信息时,使用src='test.js'代替直列包括我的脚本?

+0

见:http://stackoverflow.com/questions/5913978/cryptic-script-error-reported-in -javascript-in-chrome-and-firefox(答案建议:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-crossorigin) –

+0

我在本地执行此操作,和'crossorigin'属性给我错误'源自脚本'文件://'已被跨源资源共享策略阻止加载:无效响应。因此,'null'不允许访问。' – Randomblue

+0

请参阅http://stackoverflow.com/questions/8456538/origin-null-is-not-allowed-by-access-control-allow-origin –

回答

0

我没有使用window.onerror但它确实表明了同样的错误:

Uncaught ReferenceError: asdf is not defined

try { 
    asdf // Trigger error 
} catch (e) { 
    function test (message, file, lineNumber, columnNumber, error){ 
     console.log(message, file, lineNumber, columnNumber, error); 
    }; 

    test(e); 
} 
+0

尝试... catch无法捕获回调中的错误。 – Randomblue

+0

使用'src ='test.js''时你不想得到相同的错误吗? – Raymond

+0

我想获得所有错误。 'test.js'只是一个示例 – Randomblue