1

在 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我不想执行的函数。keydownd

4

2 回答 2

1

设法让它使用这个命令:document.onkeydown = null;

于 2012-12-04T09:16:06.190 回答
0

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

disconnect() 接受一个特制的参数,因为它是唯一的参数,巧合的是,它是 dojo.connect 的返回值。

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

附带说明一下,我不太确定 Dojo 内部发生了什么(尽管它可能实现了一个 polyfill,所以如果您使用 Dojo,则不必使用本机函数),但 IEattachEventdetachEvent接受以 'on' 为前缀的事件名称,例如onmouseoutonkeydown(参见MSDN 文章)。

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

于 2012-12-04T09:13:01.320 回答