您需要定义一个处理 PreventDefault 行为的函数,如下所示:
document.addEventListener('touchmove', preventDefault, false);
function preventDefault(e) { e.preventDefault(); };
这样稍后在代码中,您可以删除事件侦听器并重新启用默认滚动:
document.removeEventListener('touchmove', preventDefault, false);
现在您可以在需要时重新添加和删除它。
您无法像原始帖子中那样使用内联匿名函数来完成此操作,因为引用匿名函数的唯一方法是首先让它触发,然后删除对它的引用,例如:
document.addEventListener('touchmove', function(e) {
e.preventDefault();
// some more logic...
this.removeEventListener('touchmove', arguments.callee, false);
}, false);
显然这不是您想要的效果。您还可以创建一个对象并存储对处理事件的方法的引用。如果您想更深入地了解,我发现此线程很有帮助:如何删除匿名函数上的EventListener? http://groups.google.com/group/mozilla.dev.tech.javascript/browse_thread/thread/22c552e9b93502f8