在Internet Explorer中删除事件侦听器

问题描述 投票:1回答:2

在Firefox和Chrome中,我的代码工作正常,但在IE中,事件不会被删除。

dojo.connect(d, "onmouseout", function(evt) {
    //remove event
});

我试过了:

document.removeEventListener("keydown", keyHandler);
dojo.disonnect(document, "keydown", keyHandler);
document.detachEvent("keydown", keyHandler);

但似乎没有任何效果。当鼠标离开存储在变量keyHandler中的画布时,keydown是我不想在d上执行的函数。

javascript internet-explorer javascript-events dojo
2个回答
1
投票

管理以使其使用此命令:document.onkeydown = null;


0
投票

检查您是否正确使用disconnect函数(并检查拼写/语法)。 documentation说:

disconnect()接受一个特制的参数,因为它是唯一的参数,巧合的是,它是dojo.connect的返回值。

...当你提供3个参数时,处理程序是最后一个。

作为旁注,我不太确定Dojo内部会发生什么(尽管它可能实现了polyfill,因此如果使用Dojo则不必使用本机函数),但是IE的attachEventdetachEvent接受前缀为'的事件名称'在',例如onmouseoutonkeydown(参见MSDN article)。

另外,请注意事件名称的不同之处。 Dojo似乎使用IE的语法与on前缀,而标准DOM实现omits it。因此,您可能想要检查您是否绑定并解除相同事件的绑定(例如,如果绑定到onkeydown,那么您应该取消绑定onkeydown而不是keydown)。

© www.soinside.com 2019 - 2024. All rights reserved.