ユーザーがJavascriptを使用してhtmlページのテキストを選択したときを知りたいのですが。テキストは編集可能であってはなりません。イベントはタグにonselect
のみ適用できるようです。いずれかのタグが無効になっている場合、イベントは発生しません。<textarea>
<input type="TEXT">
これらのタグでこれを回避する方法はありますか?
まったく異なるアプローチはありますか?
ユーザーがJavascriptを使用してhtmlページのテキストを選択したときを知りたいのですが。テキストは編集可能であってはなりません。イベントはタグにonselect
のみ適用できるようです。いずれかのタグが無効になっている場合、イベントは発生しません。<textarea>
<input type="TEXT">
これらのタグでこれを回避する方法はありますか?
まったく異なるアプローチはありますか?
確かに、ここに例があります:http: //www.codetoad.com/javascript_get_selected_text.asp
ここに表示されている内容を使用して、イベントをドキュメント本文のクリック/リリースイベントにバインドし、選択範囲があるかどうか、および選択範囲の長さを確認して、テキストを選択したかどうかを判断できます。
イベントをキャプチャし、mouseUp
を使用してテキストが選択されているかどうかを確認できますwindow.getSelection()
。
ただし、この方法はブラウザ間の互換性がない場合があります ( window.getSelection()
)。
mouseUp
編集:バインディングを使用したかなり完全な例を次に示します: http://mark.koli.ch/2009/09/use-javascript-and-jquery-to-get-user-selected-text.html
これは、クロスブラウザーの方法で行うのは簡単ではありません。IE では、select
イベントは本文テキストとフォーム入力にのみ適用されるため、必要なことは実行できますが、ユーザーがクロスブラウザーの方法で選択を行ったことを検出するには、keyup
とmouseup
イベントの両方を処理する必要があります。それでも、[すべて選択] メニュー オプション (通常は [編集] および右クリックのコンテキスト メニューにあります) を使用するユーザーなどの選択イベントは検出されません。したがって、定期的にポーリングし、選択オブジェクトのプロパティをチェックする必要があります (IE 経由window.getSelection()
またはdocument.selection
IE で取得)。