2017-03-16 8 views
0

デバイスのタッチイベントを防止する機能があります(特定の場合)。 Chromeの最終更新まではうまくいきました。event.preventDefaultがChromeの "document"/"document.body"要素で機能していない

documentまたはdocument.bodyからのイベントを防止しようとしていますが、いくつかの特定の要素からイベントを受信すると機能します。例えば

:私はbody要素内の子供たちの多くを持っているし、この構造を変更することはできませんので、

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

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

これは、非常に便利な動作ではありません。

誰かがそれを再び取得する方法を知っていますか、それとも最新のChromeの正しい動作ですか?助けていただければ幸いです。

答えて

1

change in Chrome 56がありました:真(でpreventDefaultへの呼び出しは無視されるように):

この変更touchstartとtouchmoveリスナーには、受動的にデフォルト設定されますドキュメントに追加されました。

passiveプロパティを再度有効にするには、falseに設定します。

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

イベントハンドラをパッシブにするのは妥当かどうかわかりませんが、とにかくこれを考慮に入れることができます。

関連する問題