huc*_*lla 33 javascript google-chrome google-chrome-extension
在Chrome扩展程序中,有没有办法全局捕获/处理内容脚本中发生的Javascript错误?(例如,提交到像bugsnag这样的Javascript错误跟踪服务)
理想情况下,我会window.onerror在内容脚本的顶部设置一个全局处理程序.但它在Chrome 40中无法正常工作:错误被捕获,但提供的信息毫无用处:"脚本错误"消息,没有包含堆栈的url,lineNumber,列或错误对象.
我创建了一个测试扩展,以显示内容脚本的这种破坏行为.详情如下.有趣的发现:
window.onerror 在后台脚本中正常工作,具有完整的错误信息window.onerror在托管网页上也可以看到扩展内容脚本抛出的错误(但错误也不包含任何有用的信息)在一个新的文件夹,创建manifest.json,content-script.js和background-script.js.然后通过Window> Extensions> Load unpacked Extension加载到Chrome中.
{
"name": "Chrome extension content-script errors test",
"manifest_version": 2,
"version": "0.0.1",
"background": {
"scripts": [ "background-script.js" ]
},
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["content-script.js"]
}]
}
Run Code Online (Sandbox Code Playgroud)
window.onerror = function (errorMsg, url, lineNumber, column, errorObj) {
console.log('Caught content script error');
console.log('errorMsg: ' + errorMsg);
console.log('url: ' + url);
console.log('lineNumber: ' + column);
console.log('column: ' + column);
console.log('errorObj follows:');
console.log(errorObj);
return true;
};
console.log('I am a content script, about to throw an error');
throw new Error('Is this error caught?');
Run Code Online (Sandbox Code Playgroud)
window.onerror = function (errorMsg, url, lineNumber, column, errorObj) {
console.log('Caught background script error');
console.log('errorMsg: ' + errorMsg);
console.log('url: ' + url);
console.log('lineNumber: ' + column);
console.log('column: ' + column);
console.log('errorObj follows:');
console.log(errorObj);
return true;
};
//To see nice window.onerror behaviour for background script..
//Uncomment 2 lines below, reload extension, and look at extension console
//console.log('I am a background script, about to throw an error');
//throw new Error('Is this error caught?');
Run Code Online (Sandbox Code Playgroud)
huc*_*lla 24
在提出这个问题5个月后,我现在相信目前还没有一种简单的方法来处理全局陷阱/处理内容脚本中发生的Javascript错误.因此,
| 归档时间: |
|
| 查看次数: |
5053 次 |
| 最近记录: |