一种可能的原因是您的事件处理程序已经在代码中被多次添加到相同的元素上。可以通过在添加事件监听程序之前使用removeEventListener方法来避免此问题。另一个可能的解决方法是使用属性相等性检查,如果目标元素已经具有相同的事件处理程序,则不再重复将其添加。以下是一个示例代码:
// 添加事件监听程序
function addEventListenerOnce(elem, event, fn) {
function once() {
fn();
elem.removeEventListener(event, once);
}
elem.addEventListener(event, once);
}
// 在元素上只添加事件监听程序一次
var elem = document.getElementById('myElem');
addEventListenerOnce(elem, 'click', function() {
alert('Event triggered only once');
});