gpt4 book ai didi

javascript - 注入(inject)的 JS 分配 window.onerror 无法触发

转载 作者:行者123 更新时间:2023-11-30 17:52:59 25 4
gpt4 key购买 nike

我需要运行第三方 JS 来扫描 jserrors。我在 chrome 的控制台中运行以下命令

window.onerror = function(errorMsg, url, lineNumber) {
alert(errorMsg);
}

throw new Error('foo');

我希望控制台能够通知我错误并弹出显示错误消息的警报。永远不会触发警报,我假设事件没有被触发。为什么不呢?

最佳答案

如果立即抛出错误(根据 this answerPaul S.),Chrome 开发者控制台将不会调用用户定义的错误事件监听器

“及时”抛出错误:

> 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

(xxxxsetTimeout()的具体返回值)


这是原始代码片段,它让我了解到 Chrome 开发控制台以某种方式改变了内部行为:

// #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 文件中执行。

关于javascript - 注入(inject)的 JS 分配 window.onerror 无法触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com