1

現在の選択を処理するノードにイベント ハンドラーをアタッチしたいのです<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>.

4

2 に答える 2

0

Google からここにアクセスした場合、これはおそらく必要なものです:onmousedownの代わりにハンドルonclick。投稿に書いてありますが、私のような怠惰な読者なら、スキミングして見逃してしまいます。

于 2012-12-19T15:42:43.917 に答える
0

迅速で汚い解決策は、使用することですwrap()-

$('span.paste').wrap('<a class="paste" />');

そして、あなたのclickイベントを<a>タグに添付しようとすることができます。これは機能します(あなたが述べたように)

于 2012-01-03T20:49:43.807 に答える