gpt4 book ai didi

javascript - IE6 中的 event.currentTarget

转载 作者:行者123 更新时间:2023-11-30 06:03:15 24 4
gpt4 key购买 nike

我有一个事件处理程序,我将其附加到一个元素以捕获冒泡的点击事件。我需要一种可靠方法来获取捕获事件的元素,而不是触发它的元素。此特定元素高于 srcElement/target 的级别数量是任意的,因此使用 parentNode 或任何不可行的解决方案。这特别需要在 IE6 中工作。虽然我有点喜欢 jQuery 框架,但我不会在其中使用 jQuery,因此任何 jQuery 建议都将被视为无用。

tl;dr:我需要 IE6 中的可靠 event.currentTarget,不需要 jQuery。

如有任何帮助,我们将不胜感激。

最佳答案

更新 attachEvent 似乎真的在这里制造了一个问题。 From quirksmode.org :

In the following cases this refers to the window:

element.onclick = function () {doSomething()}
element.attachEvent('onclick',doSomething)
<element onclick="doSomething()">

Note the presence of attachEvent(). The main drawback of the Microsoft event registration model is that attachEvent() creates a reference to the function and does not copy it. Therefore it is sometimes impossible to know which HTML currently handles the event.

解决这个问题的唯一方法似乎是创建一个包装器,例如:

var addListener = (function() {
if(document.attachEvent) {
return function(element, event, handler) {
element.attachEvent('on' + event, function() {
var event = window.event;
event.currentTarget = element;
event.target = event.srcElement;
handler.call(element, event);
});
};
}
else {
return function(element, event, handler) {
element.addEventListener(event, handler, false);
};
}
}());

然后 this 将引用该元素,event.currentTarget 也是如此,您会将 event 作为第一个参数传递。

用法:

addListener(element, 'click', function(e) {
// this refers to element
// e.currentTarget refers to element
// e.target refers to the element that triggered the event
});

旧答案:(适用于内联传统事件处理程序,以及addEventListener(但不是 attachEvent))

在事件处理程序中,this 指的是事件处理程序附加到的元素。

关于javascript - IE6 中的 event.currentTarget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6985351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com