gpt4 book ai didi

javascript - 可以使用 Javascript 将多个事件监听器/处理程序添加到同一元素吗?

转载 作者:IT王子 更新时间:2023-10-29 03:14:53 25 4
gpt4 key购买 nike

我有:

if (window.addEventListener) {
window.addEventListener('load',videoPlayer,false);
}
else if (window.attachEvent) {
window.attachEvent('onload',videoPlayer);
}

然后我有:

if (window.addEventListener) {
window.addEventListener('load',somethingelse,false);
} else if (window.attachEvent) {
window.attachEvent('onload',somethingelse);
}

将它们放在一起是首选/功能吗?喜欢

if (window.addEventListener) {
window.addEventListener('load',videoPlayer,false);
window.addEventListener('load',somethingelse,false);
} else if (window.attachEvent) {
window.attachEvent('onload',videoPlayer,false);
window.attachEvent('onload',somethingelse);
}

最佳答案

您可以随心所欲。他们不一定要在一起,这取决于代码的上下文。当然,如果您可以将它们放在一起,那么您应该这样做,因为这可能会使您的代码结构更加清晰(在“现在我们正在添加所有事件处理程序”的意义上)。

但有时您必须动态添加事件监听器。不过,不管你是不是在处理IE,都没有必要多次测试。

更好的做法是从中抽象出来,并在页面加载时只测试一次可用的方法。像这样:

var addEventListener = (function() {
if(document.addEventListener) {
return function(element, event, handler) {
element.addEventListener(event, handler, false);
};
}
else {
return function(element, event, handler) {
element.attachEvent('on' + event, handler);
};
}
}());

这将测试一次 使用哪种方法。然后您可以在整个脚本中附加事件:

addEventListener(window, 'load',videoPlayer);
addEventListener(window, 'load',somethingelse);

关于javascript - 可以使用 Javascript 将多个事件监听器/处理程序添加到同一元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5411055/

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