2011-08-16 3 views
0

jsを介して兄弟のテキスト入力の値を増やすスパンにmouseupイベントリスナーを追加しました。ユーザーがクリックまたはクリックできる矢印コントロールを考えてみましょう価値。問題:ユーザーがスパンをあまりに速くクリックすると、Safari/Chromeはそれをダブルクリックとして解釈し、近くのアイテムを選択して青いボックスの下にレンダリングします。これらのブラウザでは、ダブルクリックすると近くのテキストを便利機能として自動的に選択するデフォルトの動作が必要です。ボタンのダブルクリックでデフォルトの動作を処理する

dblclickイベントを追加してイベントを捕捉し、preventDefault()、stopPropagation()を実行するかfalseを返そうとしました。しかし、何も動作しません。私は-user-select:noneも追加しました。近くの商品にCSSルールが適用されます。しかし、ブラウザはこれらをスキップして強調表示する何かを見つけます。どのようにこの動作を防止するための任意の考えですか?

+0

あなたのコードを確認できますか? – Mathletics

答えて

0

上記コメント内のリンクを見つけた後、私は解に到達することができた。また、選択を削除するJSの機能については、この質問を参照してください。このアイデアは、ボタンにクリックイベントをアタッチし、クリックの総数に対する「詳細」プロパティを調べます。ユーザーが2回以上クリックした場合、clearSelectionを呼び出して、「選択」DOM要素をクリアします。また、選択した背景スタイルを透明に設定して、点滅を防ぐために、特定のテキストブロックにクラスを追加することもできます。

私はここにJSFiddleを投稿しました。

http://jsfiddle.net/vince/Ts85n/

1

定義したダブルクリックイベントコールバックで、クリックしたいオブジェクトをフォーカスしたものとして設定します。 https://developer.mozilla.org/en/DOM/element.focus

編集:また、すぐにではなく短時間でフォーカスを呼び出すようにしてください。テキストが選択されるように、周囲の発生しないダブルハイパーリンクをクリック

<script type="text/javascript"> 
    function test() { 
     // something 
    } 
</script> 

<style type="text/css"> 

span::selection, 
span *::selection { 
    background: transparent; 
} 
span { 
    -moz-user-select: none; 
    -khtml-user-select: none; 
} 

</style> 

<span>surrounding text <a href="#" onclick="test(); return false;">Link</a> more text</span> 

代替が以下に概説されます。

Prevent text selection after double click

+0

ニース。これは機能します。ありがとう。私の場合、最小限のタイムアウトは500msです。近くのオブジェクトの周りにまだ青いフラッシュがあります。しかし、それは完全な青いオーバーレイよりも優れています。 – Vince

+0

これまでにうまく機能している別のソリューションが見つかりました... http://bytes.com/topic/javascript/answers/635488-prevent-text-selection-after-double-click – Vince

関連する問題