繁体   English   中英

event.preventDefault不适用于Chrome中的“ document” /“ document.body”元素

[英]event.preventDefault is not working for “document” / “document.body” elements in Chrome

我有一些功能可以防止设备上发生触摸事件(在某些特定情况下)。 在Chrome的最新更新之前,它运行良好。

更新后,尝试防止从documentdocument.body获得的事件不再起作用,但是如果我侦听某个特定元素中的事件,该方法将起作用。

例如:

//this not works
document.addEventListener("touchmove", function(event) {
    event.preventDefault();
});

//this one works
document.querySelector(".container").addEventListener("touchmove", function(event) {
    event.preventDefault();
});

这不是很方便的行为,因为我在body元素内有很多孩子,并且无法更改此结构。

有谁知道如何使其重新运行,或者它对于最新的Chrome是正确的行为吗? 感谢您的帮助,谢谢。

Chrome 56发生变化

进行此更改后,添加到文档中的touchstart和touchmove侦听器将默认为Passive:true(这样,对preventDefault的调用将被忽略)。

为了使它再次起作用,可以将passive属性设置为false

document.addEventListener("touchmove", function(event) {
    event.preventDefault();
}, {passive: false});

不确定强制事件处理程序不是被动的是否合理,但是无论如何都可以考虑到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM