【问题标题】:Removing event listener in Internet Explorer删除 Internet Explorer 中的事件侦听器
【发布时间】:2012-11-21 20:33:42
【问题描述】:

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

【问题讨论】:

    标签: javascript internet-explorer dojo dom-events


    【解决方案1】:

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

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

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

    作为旁注,我不太确定 Dojo 内部发生了什么(尽管它可能实现了一个 polyfill,所以如果你使用 Dojo,则不必使用本机函数),但 IE 的 attachEvent 和 @987654326 @ 接受以“on”为前缀的事件名称,例如onmouseoutonkeydown(见MSDN article)。

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

    【讨论】:

      【解决方案2】:

      设法让它与这个命令一起工作:document.onkeydown = null;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-04
        • 1970-01-01
        • 2022-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-07
        • 1970-01-01
        相关资源
        最近更新 更多