我正在修改包含以下代码的HTML5应用,以防止在其中一个屏幕上滚动:
document.addEventListener('touchmove', function (evnt) { evnt.preventDefault(); }, false);
我无法在其他屏幕上滚动回来 - 我已经查看了有关removeEventListener的多个答案,并尝试过:
document.addEventListener('touchmove', function (evnt) { return true; }, false);
document.addEventListener('touchmove', function (evnt) { evnt.preventDefault(); }, true);
答案 0 :(得分:0)
如果你绑定到touchmove
的子元素document
(可能是页面的容器,无论可能是什么),那么在该事件处理程序中执行evnt.stopPropagation()
,事件将永远不会冒泡到文件中,也不会被阻止。
document.addEventListener('touchmove', function (evnt) { evnt.preventDefault(); }, false);
child.addEventListener('touchmove', function (evnt) { evnt.stopPropagation(); }, false);
答案 1 :(得分:0)
您无法删除或取消绑定匿名函数。 (您对touchmove事件的回调)。
但是,您可以使用引用函数的变量轻松实现所需的功能。见下文:
var callback = function (evnt) { evnt.preventDefault(); };
document.addEventListener('touchmove', callback, false);
document.removeEventListener('touchmove', callback);
答案 2 :(得分:0)
不要使用匿名函数,而是给它起一个名字
var blockScroll = function(evnt) {
evnt.preventDefault();
}
然后您可以将其添加为侦听器:
document.addEventListener('touchmove', blockScroll);
您可以稍后将其删除为听众:
document.removeEventListener('touchmove', blockScroll);