3

ゴースト クリックに関する多くの資料/投稿があり、それをよりよく理解しようとしています。私が理解しているように、ゴーストクリックの理由はclick、タッチイベントの約300ミリ秒後にイベントがディスパッチされることです。jQuery Mobile はvclick、指の位置の下にあるコンテンツを変更する可能性がある場合は常に、イベントを使用しないことを提案しています。

私の最初の質問clickは次のとおりです:それは、対象となる要素が最初に触れられた要素と異なる場合にのみゴーストクリックが発生するということですか? たとえば、ボタンがタッチされたときにデータベース エントリを書き込みます。それ以外は何もしません。ゴーストクリックの可能性はありますか?

この場合、単にイベントのみ tapを使用し、イベントをまったく使用しない場合、ゴースト クリックを完全に防ぐことができるということではないclickでしょうか。

私の最後の質問は、PhoneGap を使用するときに 300 ミリ秒の遅延を使用しないようにブラウザーに指示できるかどうかです (これにより、問題は即座に解決されます)。ブラウザ。

4

2 に答える 2

3

ダブルタップや太い指の間違いなどを検出するために、クリック イベントは 300 ミリ秒遅延されます。

はい、可能な限り、代わりにタッチ イベントを使用する必要があります。

はい、JS を少し使って高速クリックを有効にする方法はたくさんあります。例えば:

  1. https://developers.google.com/mobile/articles/fast_buttons
  2. https://forum.jquery.com/topic/how-to-remove-the-300ms-delay-when-clicking-on-a-link-in-jquery-mobile
  3. http://labs.ft.com/2011/08/fastclick-native-like-tapping-for-touch-apps/

300 ミリ秒の遅延に耐える必要はありません。

于 2012-11-04T17:50:11.593 に答える
2

クリックできるすべてのページに適切なvclickjQuery イベント ハンドラーがインストールされている場合、ゴースト クリックを停止する簡単な方法の 1 つはtouchend、本文にイベント ハンドラーを作成し、そこから呼び出すpreventDefaultことです。

$(document.body).on('touchend', null, function(e) {
  e.preventDefault();
});

これにより touchesからの通常のクリックが無効になるため、vclick ハンドラーを追加しない限り、従来のリンクやフォーム入力は機能しなくなることに注意してください。

于 2013-06-17T13:29:42.667 に答える