window.onerror支持运行的位置及是否需置于页面head区域?
嘿,我来帮你理清这两个关于window.onerror的问题~
关于window.onerror的问题解答
问题1:window.onerror支持运行的位置有哪些?
window.onerror作为全局错误捕获函数,只要满足在可能抛出错误的代码之前被定义并执行,就可以放在这些位置:
- 页面
<head>标签内的<script>块中:这是最常用的位置,能尽早捕获页面加载阶段的错误 - 页面
<body>标签内的<script>块中:但要注意,如果放在body靠后的位置,可能捕获不到前面脚本抛出的错误 - 外部JS文件中:只要这个外部JS文件在其他可能出错的脚本之前被引入并执行,就能正常工作
核心就是要让它先于错误代码运行,不管是内联脚本还是外部文件,都能发挥作用。
问题2:window.onerror是否需要放在当前正在加载页面的head部分?
不是必须,但放在<head>里是非常推荐的最佳实践。
原因很直观:<head>里的脚本会在<body>内容开始加载和执行前先运行,这样能确保window.onerror在页面中所有其他脚本(包括body里的脚本)运行前就完成注册,不会漏掉页面加载早期的错误。
拿你提供的代码举例:如果把注释掉的var x=document.getElementById("demo").value;这行取消注释,这行代码会因为找不到demo元素而抛出错误,而你放在head里的onerror已经提前注册好了,就能成功捕获这个错误并弹出提示。但如果把onerror的定义移到body里那个脚本的后面,那这个错误就会因为onerror还没注册而无法被捕获。
当然,如果你的页面脚本都是异步加载或者有特定的执行顺序,只要保证onerror在错误代码前执行,放在其他位置也没问题,但head是最稳妥的选择。
内容的提问来源于stack exchange,提问作者Halcyon
相关产品推荐
相关产品推荐

