【jQuery】iOS・iPadOSでスクロールすると発生するリサイズ処理を止める方法

この記事は約2分で読めます。

iPhone(iOS)のSafariでスクロールするとリサイズ処理が走るのやめて欲しい。
実機でしか確認できないので、忘れる時があるから困っちゃう。

この厄介なリサイズ処理問題の原因は、スクロールすると
Safariのアドレスバーが小さくなる時にリサイズ処理が走るみたいで、
ん~~~困ったな。。。

iOSスクロール問題で困った頭の中

困ったなぁ

iOSの時だけ、Safariのアドレスバーが動くのを検知して。。。
ん~Safariのアドレスバーってどうやって取得するんだ?めんどくさそうだ!これは諦めよう。
・・・他を考える。
iOSの時だけ、横幅が変わらない限り、スクロールした時にリサイズ処理禁止にすればイケるかも!
いや。もっとだ!
スクロールしたらリサイズ処理が呼ばれるんだから、
リサイズ処理にiOSの時だけ、横幅が変わったら処理するようにすればいいんだ!
iPhone(iOS)の判定は、たしかこの記事に書いてあったな。
記事を読んで、iOSだけじゃなくiPadOSも一緒に検知することにしよう!

iOSとiPadOSのスクロール問題を解決することにする!

記事タイトルも変えた!コードも書いて、端末検証して、デモも作った!
デモでは、PCの場合は、縦・横のウィンドウサイズを変更するとアラートが出ます。
iPhone、iPadの場合は、スクロールしてもリサイズ処理は起きませんが、
画面の向きを変えるとリサイズ処理が発動します!
デモで確認したい場合は、こちらか下のQRコードを端末で読み込んでください!

https://hajimete.org/pepepe/
お次はコードです。

jQuery

var use = navigator.userAgent;
var yoko1 = $(window).width();
$(window).resize(function(){
  var yoko2 = $(window).width();
  if (use.indexOf('iPhone') > 0 || use.indexOf('iPad') > 0) {
    if(yoko1 != yoko2) {
      yoko1 = yoko2;
      resize();
    }
  } else {
    resize();
  }
});

function resize() {
  //リサイズ時に実行する処理
  alert("iOSは向きが変わった時に、PCでは縦横のウィンドウサイズが変更した時にこのアラートが出るよ。");
}

これをコピーして「//リサイズ時に実行する処理」のアラートを消したらリサイズ処理を書いてくださいね!
以上です!!!

javascriptjQueryサイト制作

フロントエンドエンジニアとして10年目のキャリアを積んでおり、figma、Illustrator、Photoshop、WordPress、HTML、今は亡きXHTML、CSS(scss)、JavaScript(jQuery)、PHPなど使って日々仕事をしています。

仕事で検索する手間を省くためフロントエンド技術に関するブログを書いています。

制作のご依頼やお問い合わせはこちらから連絡お願いします。

エンデ・バタローをフォローする
シェアする
初めてのブログ

コメント

タイトルとURLをコピーしました