ユーザーが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.selectionIE で取得)。