Подтвердить что ты не робот

Обнаружение события вставки в контентной

учитывая содержимое редактируемого div. Как я могу обнаружить событие вставки, предотвратить вставку пасты, чтобы я мог перехватывать и дезинфицировать пасту только для включения текста?

Я также не хочу терять фокус после завершения пасты + санитария.

Идеи? Благодаря

4b9b3361

Ответ 1

ОБНОВЛЕНИЕ:

Все основные браузеры теперь предоставляют вам доступ к данным буфера обмена в событии вставки. Смотрите Ответ Нико Бернса для примера в новом браузере, а также проверьте ответ Tim Down, если вам нужно поддержать более старые браузеры.


Вы можете прослушать onPaste событие в div, чтобы обнаружить пасту. Если вы просто хотите отключить вставку, вы можете вызвать event.preventDefault() из этого прослушивателя.

Чтобы захватить вставленный контент, это немного сложнее, так как событие onPaste не дает вам доступ к вставленному контенту. Обычный способ справиться с этим состоит в том, чтобы сделать следующее из обработчика события onPaste:

  • создайте фиктивный div и поместите его за границы окна, чтобы он не отображался посетителям.
  • переместите фокус на этот div
  • вызов метода дезинфицирующего средства с помощью setTimeout(sanitize, 0)

и от вашего метода дезинфекции:

  • найдите фиктивный div и получите его содержимое
  • дезинфекция HTML и удаление div
  • переместите фокус обратно в исходный div
  • вставьте дезинфицированный контент в исходный div