我需要运行第三方 JS 来扫描 jserrors。我在 chrome 的控制台中运行以下命令
window.onerror = function(errorMsg, url, lineNumber) {
alert(errorMsg);
}
throw new Error('foo');
我希望控制台会通知我错误和弹出警报以显示错误消息。警报永远不会被触发,我假设事件没有被触发。为什么不?
我需要运行第三方 JS 来扫描 jserrors。我在 chrome 的控制台中运行以下命令
window.onerror = function(errorMsg, url, lineNumber) {
alert(errorMsg);
}
throw new Error('foo');
我希望控制台会通知我错误和弹出警报以显示错误消息。警报永远不会被触发,我假设事件没有被触发。为什么不?
如果立即引发错误,Chrome 开发者控制台将不会调用用户定义的错误事件侦听器(根据Paul S.的这个回答)。
“及时”抛出错误:
> window.onerror = function () {console.log('error!');};
function () {console.log('error!');}
> throw new Error();
Error
抛出延迟的错误:
> window.setTimeout(function() {throw new Error()}, 0);
xxxx
error!
Uncaught Error
(xxxx是具体的返回值setTimeout()
)
// #btn is a simple button
document.getElementById("btn").addEventListener("click", function () {
var script = document.createElement("script");
script.innerHTML = "window.onerror=function(){alert('An error occurred!');};throw new Error('42');";
document.head.appendChild(script);
});
此代码将在普通 HTML 文件中执行。