2

我试图在第一次触摸后删除 touchevent。
我尝试了下一个代码,但它不起作用:

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

2 回答 2

3

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

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

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

我重命名ourGameCanvasourCanvas. 仅当元素、事件名称、函数引用和useCapture 标志与所使用的相同时,才能删除事件侦听器addEventListener

于 2012-12-02T13:13:04.067 回答
1

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

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

attachEventand也是如此detachEvent(如果您编码也支持 IE < 9)

于 2012-12-02T13:13:47.483 回答