Bap*_*aud 4 javascript addeventlistener preventdefault
我正在尝试禁用网页上的每个点击事件。
document.addEventListener("click", function (e) {
e.preventDefault();
e.stopImmediatePropagation();
let clicked = e.target;
console.log(clicked);
});Run Code Online (Sandbox Code Playgroud)
这应该可以防止每次点击事件,对吗?但我仍然发现它被忽略的情况(主要是链接)。
我缺少什么?
这里的问题是事件在哪个阶段被处理程序捕获(或拦截)。您问题中的代码是针对在传播的最后阶段中冒泡到document(其传播尚未被文档树下方的元素停止的事件)的事件执行的,而不是针对发生在document(您之后的事件)的所有事件执行的)。
在您的情况下,您实际上希望在“捕获”阶段停止所有后代的事件执行- 请参阅第 3.1 节 - (事件传播的第一阶段)。
添加true到捕获阶段执行的调用:
document.addEventListener("click", function (e) {
// ...
}, true);
Run Code Online (Sandbox Code Playgroud)
您也应该只需要e.stopImmediatePropagation()在您的处理程序中。
| 归档时间: |
|
| 查看次数: |
9001 次 |
| 最近记录: |