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では縦横のウィンドウサイズが変更した時にこのアラートが出るよ。");
}
これをコピーして「//リサイズ時に実行する処理」のアラートを消したらリサイズ処理を書いてくださいね!
以上です!!!







コメント