5

複数の行を含むテーブルがあります。各行は、行を 1 回クリックすることで選択できます。行をダブルクリックすると、その行が表すデータシートが同じウィンドウに開きます。

モバイル デバイスを使用している場合、ダブル クリック (ダブル タップ?) はダブル クリック イベントをトリガーせず、代わりにモバイル ブラウザーがズームします。

少し考えてみた結果、モバイル デバイスではシングル クリック/タップでデータシートを開く方が理にかなっていると思います。

現在、テーブルのイベントリスナーを設定するときに、次のコードを使用して、モバイルデバイスのブラウザーであるかどうかを検出しています。

if( /Android|webOS|iPhone|iPad/i.test(navigator.userAgent) ) {
    // Single click event bind, open
} else {
    // Single click event bind, select
    // Double click event bind, open
}

ユーザー エージェントに頼る代わりに、何らかの機能検出を行い、ダブルクリックできないデバイスが機能するようにします。

Android デバイスで dblclick イベントが利用可能かどうかを検出しようとしましたが、利用可能です。
ブラウザがサポートしているので、これは理にかなっていると思いますが、ダブルタップするとデバイスが別のイベントをトリガーするだけです。

私が思いついた他の唯一のことは、touchstartetc. イベントが利用可能かどうかを確認することですが、それはユーザーエージェントを確認するのと同じくらい間違っているようです。

ブラウザ/クライアントが期待どおりにダブルクリックをサポートしているかどうかを検出する良い方法はありますか?

4

1 に答える 1

6

タイムアウトを使用して、最初のクリックの後に別のクリックがあるかどうかを確認してみてください

$(Elm).click(function(evnt){
  clicks++;
  if (clicks == 1) {
    setTimeout(function(){
      if(clicks == 1) 
        // Single click event bind, open
       else 
         // Double click event bind, open
    },2000);
});
于 2013-01-16T08:14:52.623 に答える