Управляйте событиями mousedown с помощью JavaScript при выделении и выделении текста - PullRequest
0 голосов
/ 05 января 2012

G'day,

Я работал над некоторой логикой для обработки выделенного текста пользователем. Я нашел очень хороший пример Марка Коли на http://mark.koli.ch/2009/09/use-javascript-and-jquery-to-get-user-selected-text.html.

Я создал рабочий пример по адресу: http://jsfiddle.net/metalskin/43c8h/8/

У меня проблема с кодом для конкретного экземпляра следующим образом:

  1. выберите текст.
  2. .
  3. закрыть диалог.
  4. Теперь щелкните без перетаскивания, чтобы очистить выделенный текст.
  5. .
  6. закрыть диалог.
  7. текст отменен.

В моей логике я не использую диалоговое окно (это просто как пример), я вставляю div с изображением, чтобы позволить пользователю выполнить действие.

Проблема заключается в том, что второй щелчок действительно очищает текст, но по какой-то причине браузер запускает событие мыши до того, как браузер очистит текст (во всяком случае, под firefox). Это, очевидно, не проблема с всплывающим диалоговым окном, но с моей логикой я получаю несколько добавленных div и, как таковые, несколько плавающих изображений поверх текста.

Есть ли способ определить, что событие приведет к удалению выделенного текста? В идеале я бы предпочел, чтобы событие сработало после того, как браузер очистил текст.

Заранее спасибо (и извините, если новый вопрос, я действительно груб, когда дело доходит до JavaScript).

: редактировать:

Я должен объяснить пример использования того, как я его использую.

  1. пользователь выделяет текст на странице
  2. появляется значок, где они только что освободили кнопку мыши от выделения текста
  3. пользователь выбирает значок, который открывает форму для ввода некоторых деталей, чтобы пометить выделенный текст (значок удаляется в этот момент времени)
  4. пользователь отправляет форму (ajax), форма закрывается.
  5. отображается страница, выделенный текст теперь не выделен (но добавлена ​​дополнительная разметка).

или

  1. пользователь выделяет текст на странице
  2. появляется значок, где они только что освободили кнопку мыши от выделения текста
  3. пользователь нажимает в другом месте на странице, чтобы удалить выделенный текст и удалить значок.
  4. пользователь отправляет форму, форма закрывается.

У меня нет проблем с отменой выделения выделенного текста при выборе значка, но проблема в том, что, если они щелкают по другой части страницы, она активирует событие мыши и, таким образом, удваивает значки (или диалоговое окно, когда в приведенном примере это не подходит).

1 Ответ

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

Вот, пожалуйста, ^ _ ^

http://jsfiddle.net/43c8h/16/

Я просто изменил этот фрагмент кода, чтобы очистить выделение при событии мыши вверх.

if (selectedText != '') {
    alert("You selected:\n" + selectedText + "\n");
    window.getSelection().removeAllRanges();
}

Или, если вы хотите сохранить выделенный текст после того, как пользователь его выделил, вы можете вызвать функцию mousedown с тем же window.getSelection (). RemoveAllRanges (); код, чтобы каждый раз очищать выделение мышью.нажата.

...