在 Internet Explorer 中删除事件侦听器



在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是当鼠标离开存储在变量d中的画布时,我不想在keydown上执行的功能。

设法让它使用以下命令工作:document.onkeydown = null;

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

disconnect() 接受特制的参数,因为它只是 巧合的是,这是来自 dojo.connect 的返回值的参数。

。当您向其提供 3 个参数时,处理程序是最后一个。

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

此外,请注意事件名称的差异。Dojo 似乎使用 IE 的语法和前缀on而标准的 DOM 实现省略了它。因此,您可能需要检查是否绑定和取消绑定相同的事件(例如,如果您绑定到 onkeydown ,那么您应该取消绑定onkeydown而不是keydown)。

最新更新