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