在Internet Explorer中删除事件侦听器

时间:2012-12-04 08:56:53

标签: javascript internet-explorer javascript-events dojo

在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上执行的函数。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

  

disconnect()接受一个特制的参数   巧合的是,来自dojo.connect的返回值。

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

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

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