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