プログレッシブ ウェブ アプリのパフォーマンスを向上させるために作業しているときに、新しい機能に遭遇しましたPassive Event Listeners
が、その概念を理解するのが難しいと感じました。
それとは何ですかPassive Event Listeners
? また、それをプロジェクトに導入する必要性は何ですか?
ベストアンサー1
パッシブ イベント リスナーは、Chrome 51 で提供された新しい Web 標準であり、スクロール パフォーマンスを大幅に向上させる可能性のある新機能です。Chrome リリースノート。
これにより、開発者は、タッチおよびホイール イベント リスナーでスクロールをブロックする必要がなくなり、スクロール パフォーマンスを向上させることができます。
問題:すべての最新ブラウザには、負荷の高い JavaScript の実行中でもスクロールをスムーズに実行できるようにするスレッド スクロール機能がありますが、この最適化は、anytouchstart
およびハンドラの結果を待機する必要があるため部分的に無効になり、イベントをtouchmove
呼び出すことでスクロールが完全に妨げられる可能性があります。preventDefault()
解決:{passive: true}
タッチ リスナーまたはホイール リスナーをパッシブとしてマークすることで、開発者はハンドラーがpreventDefault
スクロールを無効にするために呼び出されないことを保証します。これにより、ブラウザーは JavaScript を待たずにすぐにスクロールに応答できるようになり、ユーザーにとって確実にスムーズなスクロール エクスペリエンスが保証されます。
document.addEventListener("touchstart", function(e) {
console.log(e.defaultPrevented); // will be false
e.preventDefault(); // does nothing since the listener is passive
console.log(e.defaultPrevented); // still false
}, Modernizr.passiveeventlisteners ? {passive: true} : false);