如何删除js中的触摸事件?

时间:2012-12-02 13:11:19

标签: javascript javascript-events touch-event

我试图在第一次触摸后删除touchevent 我已经尝试了下一个代码,但它没有用:

ourCanvas.addEventListener("touchstart", function(){
    evt.preventDefault();
    startGame();
    ourGameCanvas.removeEventListener("touchstart");
}, false);`

2 个答案:

答案 0 :(得分:3)

您需要将对原始函数的引用传递给removeEventListener

ourCanvas.addEventListener("touchstart", function funcref(evt) {
    evt.preventDefault();
    startGame();
    ourCanvas.removeEventListener("touchstart", funcref, false);
}, false);

在前面的代码中,我将匿名函数表达式转换为命名函数表达式(funcref),以便稍后可以在函数中使用它。

我将ourGameCanvas重命名为ourCanvas。如果元素,事件名称,函数引用 useCapture标志与addEventListener使用的标记相同,则只能删除事件侦听器。

答案 1 :(得分:1)

removeEventListener方法需要与addEventListener方法相同的参数...换句话说:

document.body.addEventListener('touchstart',function touchStartHandler(e)
{//use named function
    document.body.removeEventListener('touchstart',touchStartHandler, flase);
},false);

同样适用于attachEventdetachEvent(如果您的编码支持IE< 9)