gpt4 book ai didi

javascript - 从attachEvent中获取事件的调用者

转载 作者:行者123 更新时间:2023-11-28 09:47:50 24 4
gpt4 key购买 nike

我想做一些简单的事情:我有一堆图像正在通过 JS 加载。我将一个事件监听器附加到加载事件,在加载图像后,在监听器函数中,我想获取调用图像并从中检索属性。这是我的简化代码:

function loadImages() {
for (var i = 0; i < arrDownloadQueueBasic.length; i++) {
var path = arrDownloadQueueBasic[i].path;

var img = new Image();
img.type = arrDownloadQueueBasic[i].type;
img.attachEvent(img, 'load', setBasicElement);
img.src = path;
}
}

function setBasicElement(e) {
var caller = e.target || e.srcElement;
alert(caller); // THIS DOESNT WORK - RETURN NULL
alert(caller.type) // OF COURSE THIS DOESNT WORK AS WELL...
}

最佳答案

有几件事您需要纠正。首先,attachEvent 方法不应该用于 IE 以外的浏览器。您应该构建代码来检查该方法是否已实现,然后采取相应的操作,如下所示:

if(img.addEventListener) {
img.addEventListener('load', setBasicElement, false);
}
else if(img.attachEvent) {
img.attachEvent('onload', setBasicElement);
}
else {
img.onload = setBasicElement;
}

另一个问题是使用attachEvent时需要在事件名称前加上“on”前缀。

编辑

您可以通过在setBasicElement函数中使用以下代码来获取调用者:

var caller = e.target || e.srcElement || window.event.target || window.event.srcElement;

这是一个工作示例 - http://jsfiddle.net/BMsXR/3/

关于javascript - 从attachEvent中获取事件的调用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11524762/

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