但它可以在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>




我花了很多时间试图解决这个问题,但无济于事。如果有人能告诉med出了什么问题,我真的很感激。该解决方案可在Chrome中运行。

最佳答案

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

您已经在此处放置了一个函数表达式,它将创建一个全新的函数。由于它是全新的,因此以前不能将其添加为事件监听器。

关于javascript - RemoveEventListener在Firefox Ver 58中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48470326/

10-10 05:58