LoginSignup
2
1

More than 3 years have passed since last update.

【モバイル】【Chrome】画面スクロール時に Resize イベントも同時に発火されるので注意する

Last updated at Posted at 2020-11-23

結論

タイトルそのまま。

モバイル版の Chrome(Android, iPhone 問わず)では、画面をスクロールした際に resize イベントも同時に発火されるので、注意したい。
※Safari は不明。

挙動

挙動自体は Chrome の仕様。

スクロールした際、 Chrome の画面上部のアドレスバーの表示・非表示が切り替わる。
それにより Chrome の画面サイズが変更するため、Resize イベントが発行されるとのこと。
詳細は以下を参照。

参考

対策

画面描画時に画面サイズを格納しておき、

let width = window.innerWidth,
  height = window.innerHeight;

Resize イベント発火時に現在の画面サイズと発火前のそれを比較することで、画面サイズが変わった場合にのみイベントを発火させることができる。

if (window.innerWidth !== width || window.innerHeight !== height) {
  //Do something
}

最後に

今回開発中の Web アプリにおいて、「モバイルを傾けた際に実行したい処理」を resize イベントに仕込んだところ、画面がスクロールされた際にも発火されてしまった。
以後気をつけたい。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1