4

この関数を使用して、デバイスがタッチ デバイスであるかどうかを検出しています。

function is_touch_device()
{
    return !!('ontouchstart' in window) || !!('onmsgesturechange' in window);
};

ここからこの関数を取得しました: JavaScript を使用して「タッチスクリーン」デバイスを検出する最良の方法は何ですか?

しかし、Chrome 25 (25.0.1364) 以降、タッチ デバイスではない私のデスクトップでは true が返されます。また、IE9 を IE10 に更新したところ、IE で true が返されました。

周りを検索しましたが、次のようなものを使用する以外に、これを修正するのに役立つものは見つかりませんでした: http://detectmobilebrowsers.com/

おすすめは何ですか?

あなたの反応を楽しみにしています!

4

5 に答える 5

4

コードは問題なく動作し、ブラウザはタッチ イベントを理解できます。画面がタッチ可能でないからといって、ブラウザがその機能をサポートしていないわけではありません。テストしようとしているのは、実際にはテストできないハードウェア機能です。この記事で説明されているように、ユーザーが一度タッチした後に実際にタッチ インターフェースを使用しているかどうかを確認したり、Modernizer などの大規模なライブラリが使用する他の多くの方法を使用したりすることはできますが、常にさまざまな方法を使用できます。

参考までに、上記の記事で実際に使用したコードは次のとおりです。

function isTouchDevice() {
   var el = document.createElement('div');
   el.setAttribute('ongesturestart', 'return;');
   if(typeof el.ongesturestart == "function"){
      return true;
   }else {
      return false
   }
}
于 2013-04-16T17:50:23.437 に答える
3

Modernizrを使用して、タッチ機能を検出できます。

この質問は、JavaScript を使用して「タッチ スクリーン」デバイスを検出する最良の方法は何ですか?とよく似ています。おそらく重複と見なされるべきです。

于 2013-06-12T11:04:33.973 に答える
3

ラップトップから作業しているサイトにアクセスしたときに、誤検知の IE10 タッチの問題も発生していました。元のis_touch_device方法は、基本的に同じものを使用しました。その文の後半を次のように修正しました。

function is_touch_device()
{
    return !!('ontouchstart' in window) || (!!('onmsgesturechange' in window) && !!window.navigator.maxTouchPoints);
}

window.navigator.maxTouchPointsこの投稿に基づいてIE10に固有のもののようです:http://msdn.microsoft.com/en-us/library/hh772144(v=vs.85).aspx

于 2013-10-05T18:31:01.503 に答える
3

これはうまくいくようです:

function isTouchEnabled() { return !!document.createTouch; }
于 2013-03-05T12:39:14.800 に答える
0

51dergees.mobiを使用して、サーバー上で適切にページ ビューを変更して検出することができます。HasTouchScreen、IsSmartPhone、IsTablet プロパティなどがあります。

于 2013-07-15T08:40:38.500 に答える