小编bit*_*kid的帖子

JavaScript中的匿名函数的removeEventListener

我有一个包含方法的对象.这些方法被放入匿名函数内的对象中.它看起来像这样:

var t = {};
window.document.addEventListener("keydown", function(e) {
    t.scroll = function(x, y) {
        window.scrollBy(x, y);
    };
    t.scrollTo = function(x, y) {
        window.scrollTo(x, y);
    };
});  
Run Code Online (Sandbox Code Playgroud)

(还有更多代码,但这足以显示问题)

现在我想在某些情况下停止事件监听器.因此我试图做一个removeEventListener,但我无法弄清楚如何做到这一点.我在其他问题中已经读过,无法在匿名函数上调用removeEventListener,但在这种情况下是否也是如此?

我在匿名函数中创建了一个方法,因此我认为这是可能的.看起来像这样:

t.disable = function() {
    window.document.removeEventListener("keydown", this, false);
}
Run Code Online (Sandbox Code Playgroud)

为什么我不能这样做?

还有其他(好的)方法吗?

奖金信息; 这只需要在Safari中工作,因此缺少即支持.

javascript safari anonymous-function dom-events

90
推荐指数
7
解决办法
8万
查看次数