在IE中模拟W3C事件捕获模型

NVI*_*NVI 15 events internet-explorer dom event-handling javascript-events

是否可以在Internet Explorer中模拟事件捕获

一个例子:

<a>one</a>
<a>two</a>
<a>three3</a>

<script>
var links = document.getElementsByTagName("A");
for (var i=0; i < links.length; i++) {
  links[i].onclick = function(){
    alert("clicked");
  };
}
</script>

我想阻止所有这些点击事件被触发.我可以用一个事件观察者做到这一点:

document.addEventListener("click", function(e) {
    e.stopPropagation();
    e.preventDefault();
}, true);

我怎么能在IE中做同样的事情?IE <9不支持addEventListener.它确实支持attachEvent,但它没有useCapture选项.

我找到了setCapture方法,但它看起来与W3捕获模型无关.

gbl*_*zex 5

通常你不能因为事件顺序.在IE中,事件将从目标元素开始冒泡而没有捕获阶段,因此您无法事先捕获它们.

只有一件事你可以做,只有管理所有事件处理程序才有可能.

  1. 写一个包装addEvent与捕捉参数
  2. 如果需要捕获,请执行以下操作

    1. 注册一个简单的冒泡事件,具有该功能
    2. 一直到父链,所有元素保存Array
    3. 游记落后这个Array调用在每个元素的原始事件处理程序