我的html页面有问题。我想在所有页面中停用触摸移动,除了我要滚动的div。所以我添加了这个js代码:
document.ontouchmove = function (e) {
if (e.target.id !== 'rest_comm') {
e.preventDefault();
}
};
它并不总是有效。
我找到了Oscar Paz的帮助,问题是滚动div里面有很多div。那么除了滚动div和所有包含的div之外,我怎么能在整个页面中停用触摸移动。
答案 0 :(得分:1)
我认为你的问题是e.target并不总是你的滚动div。如果你有里面的元素,e.target是你触摸的DOM树中最深的元素(它可能是一个段落,一个图像......)。 你要做的是检查e.target是否在你的滚动div中,或者是你的滚动div。基本上是:
document.addEventListener('touchmove', function(e) {
var node = e.target;
while (node && node.id != 'comm_list_content') node = node.parentElement;
if (!node) e.preventDefault();
}, false);
这样,如果你触摸你的div,你只会调用preventDefault()。