我希望我的脚本检查许多依赖关系,并在成功后出现一个提交按钮。但是,如果发生任何类型的javascript错误,则该按钮将永远不会出现。所以我想在脚本结尾处做类似的事情:
if (typeof window.error_has_appeared == 'undefined') {
button.classList.add("button_activated");
}
我试图用window.onerror解决我的问题,但似乎无法捕获所有错误。
<script type="text/javascript">
window.onerror = function(msg, url, line, col, error) {
alert("ERROR");
};
window.onload = async function() {
test
};
</script>
我可以在javascript日志中看到:“ ReferenceError:未定义测试”。但是为什么onerror警报不起作用?
答案 0 :(得分:1)
因为您已将onload
处理函数设为async
函数,所以ReferenceError不是未处理的错误(由全局错误处理程序处理),而是未处理的承诺拒绝,因此由全球承诺拒绝处理程序。
由于load
事件代码对异步函数返回的诺言没有任何作用,因此只需将函数设为async
:
window.onerror = function(msg, url, line, col, error) {
console.log("ERROR");
};
window.onload = function() {
test
};
或使用onunhandledrejection
:
window.onerror = function(msg, url, line, col, error) {
console.log("onerror triggered");
};
window.onunhandledrejection = function(msg, url, line, col, error) {
console.log("onunhandledrejection triggered");
};
window.onload = async function() {
test
};