【发布时间】:2015-12-22 23:55:04
【问题描述】:
我需要在Document级别观看children的事件,但是如果children使用stopPropagation()方法停止传播,我就无法监听children发生的那些事件。
有人知道更好的方法吗?
编辑:现在我想创建一个 chrome 扩展来监视 DOM 节点事件,但该事件可能会停止传播,并且向所有节点添加额外的侦听器不是一个好习惯。以下示例将显示我的问题。
客户 HTML 片段
<body>
<input type="button" value="Click Me" id="b">
</body>
客户 javascript
var button = document.querySelector('#b');
button.addEventListener('click', function(e) {
console.log('Button has been clicked');
e.stopPropagation();
});
chrome 扩展内容脚本
document.addEventListener('click', function(e) {
console.log('Node(' + e.target.nodeName + ') has been clicked');
// this listener will not be invoked because event has been stopped
// propagation.
});
【问题讨论】:
-
在这里提问时,最好描述您的真正问题,而不仅仅是您尝试解决的问题。这使阅读您的问题的人可以为您提供您甚至不知道的解决方案。当您只描述您尝试过的解决方案的问题而没有描述真正的问题时,除了您当前尝试创建的解决方案之外,我们几乎无能为力。这被称为XY problem,严重限制了人们对您的帮助程度。'
标签: javascript html events listener stoppropagation