dojo 正在Internet Explorer中删除事件侦听器

bqf10yzr  于 2022-12-16  发布在  Dojo
关注(0)|答案(2)|浏览(154)

在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中。

hgtggwj0

hgtggwj01#

设法让它工作与此命令:document.onkeydown = null;

ewm0tg9j

ewm0tg9j2#

检查是否正确使用了disconnect函数(还要检查拼写/语法)。documentation显示:
disconnect()接受一个特制的参数作为唯一的参数,而这个参数恰好是dojo. connect的返回值。
......同时您为其提供3个参数,处理程序是最后一个。
顺便说一句,我不太确定Dojo内部发生了什么(尽管它可能实现了多边形填充,所以如果使用Dojo,您不必使用本机函数),但IE的attachEventdetachEvent接受以“on”为前缀的事件名称,例如onmouseoutonkeydown(请参见MSDN article)。
另外,注意事件名称的不同。Dojo似乎使用带有on前缀的IE语法,而标准DOM实现使用omits it。因此,您可能需要检查是否绑定和解除绑定了同一事件(例如,如果绑定到onkeydown,则应解除绑定onkeydown而不是keydown)。

相关问题