61

ベスト プラクティスに従うために、使用しているデバイスに応じて適切な JavaScript/jQuery イベントを使用しようとしています。たとえば、onclick または touch イベントを持つタグを持つモバイル サイトを構築しています。iPhone の場合は、「touchstart」イベントを使用します。そのハンドラーをオブジェクトにバインドする前に、デバイスが「touchstart」をサポートしているかどうかをテストしたいと思います。そうでない場合は、代わりに「onclick」をバインドします。

これを行う最善の方法は何ですか?

4

4 に答える 4

99

イベントがサポートされているかどうかは、次の方法で検出できます。

if ('ontouchstart' in document.documentElement) {
  //...
}

この記事を見てください:

そこでisEventSupported公開されている関数は、さまざまなイベントの検出に非常に優れており、クロスブラウザーです。

于 2010-05-26T19:03:42.417 に答える
12

このコードを使用して、デバイスがタッチをサポートしているかどうかを検出します。

'touchmove'の代わりに'MSPointerDown'イベントを使用するWindows8IE10でも機能します

var supportsTouch = false;
if ('ontouchstart' in window) {
    //iOS & android
    supportsTouch = true;

} else if(window.navigator.msPointerEnabled) {

    // Windows
    // To test for touch capable hardware 
    if(navigator.msMaxTouchPoints) {
        supportsTouch = true;
    }

}
于 2013-01-14T14:44:11.767 に答える
3

typeof document.body.ontouchstart == "undefined"通常のdomイベントにフォールバックするかどうかを確認できます

于 2010-05-26T19:05:57.093 に答える
1

この問題の解決策の完全なソース コードを使用して、すべてのブラウザーで動作する完全なデモストレーションを作成しました: Detect touch screen devices in Javascript

于 2011-05-12T03:09:34.520 に答える