重新启用touchmove eventlistener.iPhone应用程序与手机差距

Re-enabling touchmove eventlistener. iPhone app with Phone gap

本文关键字:应用程序 iPhone 手机 差距 eventlistener touchmove 新启用 启用      更新时间:2023-09-26

我有以下权利在我的js的顶部(这是需要的iScroll插件的工作)。

document.addEventListener('touchmove', function (e) {e.preventDefault();}, false);

在某些页面上,我需要重新启用这个,以便正常的iPhone滚动接管(并修复在页面上使用isscroll时iPhone键盘不弹出输入框的错误)。

我无法练习语法。有人知道怎么做吗?

您需要定义一个处理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 ?

在我的iphone上的addEventLister之后,我不能再删除它们了。但这对我有用。

var prevent = preventDefault(e) { e.preventDefault(); };
//To disable drag
element.ontouchmove = prevent;
...
//To enable it agian
element.ontouchmove = null;
相关文章: