@ledsun blog

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

ブラウザを起動している端末がモバイル機器であるか判定すること

stackoverflow.com

を参考にして、次の関数で判定してみました。

function () {
  return (
    'ontouchstart' in window ||
    navigator.maxTouchPoints > 0 ||
    navigator.msMaxTouchPoints > 0
  )
}

タッチ出来るかどうかで判定します。 これだとsurfaceみたいなタッチできるPCもモバイル機器に判定しちゃうんですよね・・・。

もう一つ考えられるのはwindowの幅が768pxとかで、判定する方法です。 レスポンシブデザインとかそうですよね。 ブラウザの幅を小さくしたときに、やっぱり上手く行かなさそうな気はします。

定石の判定方法があるのでしょうか? 自分で調整するには、実機がないと難しそうな感じはします。

僕の場合は本当に欲しい情報は「入力デバイスとして物理キーボードが使えるかどうか」です。 物理キーボードが主の道具で、使えない場合に代替え手段を用意しています。 これもJavaScriptから判定するのは難しそうです。