在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
上执行的函数。
管理以使其使用此命令:document.onkeydown = null;
检查您是否正确使用disconnect
函数(并检查拼写/语法)。 documentation说:
disconnect()接受一个特制的参数,因为它是唯一的参数,巧合的是,它是dojo.connect的返回值。
...当你提供3个参数时,处理程序是最后一个。
作为旁注,我不太确定Dojo内部会发生什么(尽管它可能实现了polyfill,因此如果使用Dojo则不必使用本机函数),但是IE的attachEvent
和detachEvent
接受前缀为'的事件名称'在',例如onmouseout
,onkeydown
(参见MSDN article)。
另外,请注意事件名称的不同之处。 Dojo似乎使用IE的语法与on
前缀,而标准DOM实现omits it。因此,您可能想要检查您是否绑定并解除相同事件的绑定(例如,如果绑定到onkeydown
,那么您应该取消绑定onkeydown
而不是keydown
)。