我在尝试使用 window.addEventListener('error' , handle),来捕获js错误,但我发现,当我制定第三个参数为true,即
window.addEventListener('error' , handle, true),
我可以捕获 <img> <link> 等引入报错,但当我使用
window.addEventListener('error' , handle, true),
或
window.onerror = handle,
就无法捕获<img> <link> 等引入报错,这是什么原因?
说实话这还真是一个非常好的问题,帮助我更加深入的了解到一些事件系统的细枝末节。
一些熟悉的知识点,addEventListener的第三个参数表示捕获阶段执行坚挺函数。按照你的描述,说明img等加载失败的事件可能没有冒泡阶段。顺藤摸瓜,在浏览器中打印相关事件详情:
看到了熟悉的一些属性,其中bubbles属性是false,感觉比较反常,这时候又要祭出官方文档了:https://dom.spec.whatwg.org/#...
根据描述
以及https://dom.spec.whatwg.org/#...的描述:
我觉得可以理解为如果这个属性为false,仅触发capture阶段的监听。
更多内容可以继续探索一下。这里就不作为正经回答了。抛砖引玉,坐等真正的答案