在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 的 attachEvent
和 detachEvent
接受以"on"为前缀的事件名称,例如 onmouseout
,onkeydown
(请参阅 MSDN 文章)。
此外,请注意事件名称的差异。Dojo 似乎使用 IE 的语法和前缀on
而标准的 DOM 实现省略了它。因此,您可能需要检查是否绑定和取消绑定相同的事件(例如,如果您绑定到 onkeydown
,那么您应该取消绑定onkeydown
而不是keydown
)。