2017-12-29 33 views
1

私は、音楽制作に使用するための簡単なWebツールを開発中です。ユーザは、マウスで領域を繰り返しクリックするか、指でタッチする(タッチスクリーン上で)、ツールはクリックの平均テンポ(例えば、160bpm)を計算する。私の場合、領域はoutput HTML要素ですが、それ以外の要素もあります。複数のクリック/タップのデフォルト処理を防止するにはどうすればよいですか?

クリックまたはタップが頻繁に発生する可能性があるため、デバイスは通常のクリックではなく、ダブルクリックまたはダブルタップと認識します。最初のケースでは、ダブルクリックのデフォルト結果であるため、領域の内容が選択されます。 2番目のケースでは、クリックを捕らえる代わりにウェブページが拡大されます(iOSなど)。

デスクトップとタッチスクリーンの両方で望ましくない動作を防ぐにはどうすればよいですか?いくつかの重要な要件は:

  1. 私はjQueryのか、他のフレームワークなしに、JavaScriptの純粋でネイティブブラウザAPIと解決策を探してください。

  2. 上記の要素のの余分なクリックを防止するソリューションは、です。ユーザーがこの要素の外側にあるウェブページ上の他の場所で複数のクリック(または複数のタップ)を実行する場合、これは通常どおり処理する必要があります。ダブルクリックで選択を防ぐため

+0

これを達成しようとしましたか?いずれにせよ、シングルクリックからダブルクリックイベントを区別することができます:https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/ondblclick(サポートにも注意してください) – briosheje

+0

@ briosheje、 'dblclick'イベントに対して' preventDefault'を試しました。それはうまくいかなかった。 –

+0

https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html –

答えて

0

function clearSelection() { 
    if(document.selection && document.selection.empty) { 
     document.selection.empty(); 
    } else if(window.getSelection) { 
     var sel = window.getSelection(); 
     sel.removeAllRanges(); 
    } 
} 

例から:Prevent text selection after double click

モバイルデバイス上のズーム防止するためには、metaタグを含める:

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 

注:このレスポンシブデザインを使用する場合にのみ実行可能なソリューションです

+0

あなたの最初の提案は、それが現れると選択をクリアします。私は選択をまったく防ぐための解決策を探します。残念なことに、第2の提案は、ページ全体のために働くので、質問の第2の要件はない。 –

関連する問題