我试图在第一次触摸后删除touchevent 我已经尝试了下一个代码,但它没有用:
ourCanvas.addEventListener("touchstart", function(){
evt.preventDefault();
startGame();
ourGameCanvas.removeEventListener("touchstart");
}, false);`
答案 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);
同样适用于attachEvent
和detachEvent
(如果您的编码支持IE< 9)