概要
iPhoneのFacebook Messengerアプリのアプリ内ブラウザで、テキスト入力フォームにフォーカス後、ソフトウェアキーボードを閉じると画面トップに強制移動させられる状態になっていた。(2019年11月12日確認、アプリの不具合として報告済み)
応急処置として、Messengerアプリの場合のみ、画面を固定する対処をした。 その際、他の環境では動作を変えたくなかったので、使われているブラウザがFacebook Messengerのアプリ内ブラウザであることを確認する必要があった。
判別の仕方
User Agent(以下、UA
)を見ることで判別可能。
UAの取得方法
判定時に大文字小文字の判別は無視したいので、小文字にして取得。console.logとかalertとかHTMLに書き出しちゃうとかで出力すれば確認できる。
var ua = navigator.userAgent.toLowerCase();
補足
UAに関するまとめはここが詳しかった。
UserAgentからOS/ブラウザなどの調べかたのまとめ - Qiita
UA取得結果
mozilla/5.0 (iphone; cpu iphone os 13_2_2 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148 [fban/messengerforios;fbdv/iphone12,3;fbmd/iphone;fbsn/ios;fbsv/13.2.2;fbss/3;fbid/phone;fblc/ja_jp;fbop/5]
- Andorid Facebook Messenger
mozilla/5.0 (linux; android 7.1.1; asus_x00hd build/nmf26f; wv) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/70.0.3538.110 mobile safari/537.36 [fb_iab/orca-android;fbav/240.1.0.16.120;]
mozilla/5.0 (iphone; cpu iphone os 13_2_2 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148 [fban/fbios;fbdv/iphone12,3;fbmd/iphone;fbsn/ios;fbsv/13.2.2;fbss/3;fbid/phone;fblc/ja_jp;fbop/5;fbcr/kddi]
その他各種ブラウザについては割愛。
結果:判別方法
UA内にiphone
とmessenger
の文字列が含まれているかで判定できそうなので、それで対応。めでたしめでたし。