Как я могу получить текст, который будет вставлен в мой текстовый редактор HTML? - PullRequest
4 голосов
/ 06 декабря 2010

У меня есть небольшой текстовый редактор на моей домашней странице (текстовая область), куда я могу вставить текст.Как я могу получить этот текст в переменной, прежде чем он будет вставлен?Я знаю, что есть эта функция:

clipboardData.getData()

, но она не работает в Firefox, и я хочу что-то для всех браузеров. Я использую HTML и Javascript.

спасибо

Ответы [ 2 ]

5 голосов
/ 06 декабря 2010

Короткий ответ: в общем случае вы не можете получить текст до его вставки. То, что вы можете сделать, это то, что делают большие веб-редакторы WYSIWYG, такие как CKEditor и TinyMCE, а именно:

  1. Обнаружение Ctrl - v / shift - ins с использованием keypress обработчика событий
  2. В этом обработчике сохраните текущий выбор пользователя, добавьте к документу элемент <div> вне экрана (скажем, слева -1000px), переместите каретку в этот раздел, таким образом эффективно перенаправив вставку
  3. Установите очень короткий таймер (скажем, 1 миллисекунду) в обработчике событий для вызова другой функции, которая извлекает содержимое HTML из div и выполняет любую необходимую обработку, удаляет div из документа, восстанавливает выбор пользователя и вставляет обработанный HTML.

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

1 голос
/ 06 декабря 2010

Работать с буфером обмена во всех браузерах непросто, и я уверен, что можно предположить, что нет способа заставить его работать только с JavaScript, если только вы не ориентируетесь на один конкретный браузер (обычно IE). Я использовал ZeroClipboard для этого: http://code.google.com/p/zeroclipboard/ - похоже, все делает хорошо.

...