在Chrome / Firefox中,我可以将自定义属性附加到一个处理程序中的事件对象,并在同一事件的不同处理程序中读取它们,即使事件处理已冒泡。
我不能在IE中做同样的事情。事件冒泡时我的自定义属性丢失了。 你知道这有什么解决方案或解决方法吗?
以下是该问题的一个示例:
<div id="div1">
<input type="button" value="Foo" id="button1">
</div>
<script>
function attach(el, event, fn) {
if (el.addEventListener) {
el.addEventListener(event, fn);
} else if (el.attachEvent) {
el.attachEvent('on'+event, fn);
}
}
attach(document.getElementById("button1"), 'click', function (event) {
event.abc = "done";
return true;
});
attach(document.getElementById("div1"), 'click', function (event) {
alert(event.abc);
return true;
});
</script>
答案 0 :(得分:0)
根据我的测试,你不能
尝试下一个代码:
attach(document.getElementById("button1"), 'click', function (ev) {
//ev=ev||event;
//ev.abc = "done";
// next lines show you why you cannot save properties in event object
var xx1=event;
var xx2=event;
alert(xx1===xx2); // // showed *false* in IE8, but expected *true*
return true;
});
我不确定但是,当请求event
对象时,IE8总是返回 new 对象,它包含与先前请求相同的属性/值。