@ledsun blog

無味の味は佳境に入らざればすなわち知れず

JavaScriptでご利用の端末がAndroidか確かめる

結論

function isAndroid() {
  return /Android/.test(navigator.userAgent)
}

にしました。

経緯

AndroidChromeブラウザでは、一番上までスクロールしてさらに下方向にドラッグするとリロードします。 このときだけ

window.onbeforeunload = () => true

を設定してリロードの前に確認ダイアログを出したいです。 最初はブラウザを起動している端末がモバイル機器であるか判定すること - @ledsun blogのようにタッチデバイスかどうかで判定していました。 これだとsurfaceのようなタッチパネルありのデスクトップPCで偽陽性になります。

没案

Chromium系のブラウザにだけ実装されている Navigator.userAgentData - Web APIs | MDN という便利なAPIがあります。

f:id:ledsun:20211207225420p:plain
platform: "Andoroid"

こんな感じで、ズバリAndroidという文字列が取れます。一個だけ問題があり

This feature is available only in secure contexts (HTTPS)

HTTPSでないと参照できません。 HTTPSな開発環境を用意していないので、テストするのが面倒だなあ・・・と思って、従来型のuserAgentを確認する方法にしました。