Как вы можете предотвратить очистку выделения перед обработкой события onclick? - PullRequest
1 голос
/ 04 января 2012

Я хочу прикрепить обработчик событий к узлу <span>, который обрабатывает текущий выбор, но до того, как сработает событие click, кажется, что выбор очищен браузером (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>.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2012

Если вы получили здесь от Google, это, вероятно, то, что вы хотите: обрабатывать onmousedown вместо onclick. Это написано в посте, но если вы ленивый читатель, как я, вы просмотрели и пропустили его.

0 голосов
/ 04 января 2012

Быстрое и грязное решение заключается в использовании wrap() -

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

, а затем вы можете попытаться прикрепить ваше click событие к тегу <a>, который работает (как вы упомянули)

...