【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サイト制作

埼玉県北本市に住み始めて2年目。

前は東京都の京王線沿線に。
その前は神戸の三宮に。
その前は名古屋の八事霊園の近くに住んでいました。

ある年の冬、車で島根県へ旅行に出かけました。
同県の山中にある寒村をゆるゆると走っていると地面が凍結しており
車ごと川に滑り落ちそうになった経験を持つ30代(男)です。

フロントエンドを始めて9年目になります。
最近は、ずっとwordpressをいじっており
エディタはVSCodeに乗り換え、日々の業務でイラレとフォトショ、HTMLとCSSとjavascriptとphpを使用してます。
仕事をしていて、検索する手間を省くためフロント技術ブログを書いています。

エンデ・バタローをフォローする
広告
初めてのブログ

コメント

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