RemoveEventListener 在 Firefox 版本 58 中不起作用

2024-05-10

但它在 Chrome 中有效。

这是我的 UI_EventBus 代码(原型): (addEventListener方法是一样的,只不过remove换成了add。)

UI_EventBus.removeEventListener = function(obj, argEventType, argEventHandler) {
    var element;;
    var strObj = obj.toString();

    if(strObj.indexOf("HTML") > -1) 
        element = obj;
    else
        element = obj.getElement();


    element.removeEventListener(argEventType, function(event){
        argEventHandler(event,obj);
    });

}

我从 UI_Event (原型)中调用它:

closeDragElement:   function(event, obj) {
event = event || window.event;
UI_EventBus.removeEventListener(obj,"mouseup", obj.closeDragElement);
UI_EventBus.removeEventListener(document,"mouseup", obj.closeDragElement);
UI_EventBus.removeEventListener(obj,"mousemove", obj.elementDrag);
}

我已通过 UI_Event (原型)中的此方法添加了它:

dragMouseDown:   function(event, obj) {
event = event || window.event;

UI_EventBus.removeEventListener(obj,"mousedown", obj.dragMouseDown,[]);
obj.mouseX = event.clientX;
obj.mouseY = event.clientY;
UI_EventBus.addEventListener(obj,"mouseup", obj.closeDragElement);
UI_EventBus.addEventListener(document,"mouseup", obj.closeDragElement);
UI_EventBus.addEventListener(obj,"mousemove", obj.elementDrag);
}

我从 UI_EventTest.html 调用 DragMouseDown -handler:

<script>
....
UI_EventBus.addEventListener(elem,"mousedown", elem.dragMouseDown);
..... 
</script>

我花了很多时间试图解决这个问题,但没有成功。如果有人能告诉我出了什么问题,我真的很感激。该解决方案适用于 Chrome。


第二个参数removeEventListener必须是您要删除的功能。

您在那里放置了一个函数表达式,这将创建一个全新的函数。由于它是全新的,因此之前不可能将其添加为事件侦听器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RemoveEventListener 在 Firefox 版本 58 中不起作用 的相关文章

随机推荐