window.onresize
でスクロールに惑わされない
window.onresize
でスクロールに惑わされないwindow.addEventListener("resize", _onresize);
resize
イベントが発生するブラウザもあります。残念なことに今回はその程度の変化で頻繫に実行したくない処理だったので、対策を取りました。
document.onscroll
document.onscroll
let documentIsScrolled = false;
window.addEventListener("scroll", () => documentIsScrolled = true);
window.addEventListener("scrollend", () => documentIsScrolled = false);
window.addEventListener("resize", event => {
if (!documentIsScrolled) {
_onresize(event);
}
});
scrollend
イベントと組み合わせて、スクロールされていない間だけ処理を実行するようにしました。
ResizeObserver
ResizeObserver
const observer = new ResizeObserver(_callback);
for (const target of document.querySelectorAll(".target")) {
observer.observe(target);
}
resize
イベントを使っていた理由を振り返って、本当に検出したかったものを思い出しました。今回、本当に知りたかったことは特定の要素の寸法の変化でした。これはresize
では難しかったので、ResizeObserver
に乗り換えresize
の利用をやめました。