簡體   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