相关疑难解决方法(0)

JavaScript:删除事件侦听器

我正在尝试删除侦听器定义中的事件侦听器:

canvas.addEventListener('click', function(event) {
    click++;
    if(click == 50) {
        // remove this event listener here!
    }
// More code here ...
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?这=事件......谢谢.

javascript events event-handling listener

118
推荐指数
7
解决办法
20万
查看次数

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万
查看次数

为什么Firefox对Webkit和IE的反应不同于"select"标签上的"click"事件?

我意识到Firefox 对标签的点击事件<select>与Webkit/IE不同,我无法弄清楚为什么或如何解决这个差异.

具体而言,Webkit的/ IE将每个点击事件上<select> 作为组合两个点击"选择",下拉的一个的点击<option>,在下面曲线图所示:

首先点击:

首先点击

第二次点击:

再次点击

在Webkit/IE中,只有在完成两次单击后才会触发click事件.

但是,在Firefox中,首次单击<select>标记被视为单击事件,第二次单击以选择<option>被视为另一个单击事件.因此,2个 点击事件已经在Firefox解雇比较一个 WebKit中/ IE进行同样的操作.

现在在代码示例中演示它,假设我们有:(JSfiddle link)

<select id="sel">
    <option>one</option>
    <option>two</option>
    <option>three</option>?
</select>
<script>
function select() {
    $("#sel").one("click", function(event) {
        console.log('mouse down!');
        $("#sel").one('click', function() {
            console.log('mouse down again!');
            $("#sel").off();
            select();
        });
    });
}
$(document).ready(function() {
    select();
});
</script>
Run Code Online (Sandbox Code Playgroud)

在Webkit/IE中,执行上图中所示的一组操作(第一次)将给出输出:

mouse down!
Run Code Online (Sandbox Code Playgroud)

在Firefox中,它将给出:

mouse down!
mouse …
Run Code Online (Sandbox Code Playgroud)

html javascript firefox internet-explorer webkit

23
推荐指数
2
解决办法
4367
查看次数