現在の選択を処理するノードにイベント ハンドラーをアタッチしたいのです<span>
が、クリック イベントが発生する前に、ブラウザー (Chrome 16.0.912.63) によって選択がクリアされたように見えます。
にハンドラーをアタッチすることで、少し厄介な方法でこれを回避できますがonmousedown
、そのようにする必要はありません。
問題を説明する簡単な HTML の例を次に示します (jQuery が必要です)。
<span class="paste">PASTE</span>
<textarea id="selected"></textarea>
<script type="text/javascript">
$('.paste').click(function(e) {
var txt = window.getSelection(); // works only in Chrome, Safari, FF
$('#selected').val(txt);
e.stopPropagation();
});
</script>
望ましい動作は、マウスを使用してテキストを選択し、「PASTE」という単語をクリックして、選択した領域の内容をテキストエリアに挿入できることです。クリック ハンドラーが起動する前に、選択がクリアされたかのように見えます。このコードは、次を使用すると正常に機能します。
<a class="paste" href="#">PASTE</a>
span 要素onmousedown
の<a>
代わりに<span>
.