Как вы обрабатываете операции oncut, oncopy и onpaste в jQuery?

StackOverflow https://stackoverflow.com/questions/237254

Вопрос

А документация jQuery говорит, что библиотека имеет встроенную поддержку следующих событий:размытие, фокус, загрузка, изменение размера, прокрутка, выгрузка, щелчок, двойной щелчок, нажатие мыши, нажатие клавиши, перемещение мыши, наведение курсора мыши, выход мыши, ввод мыши, отпуск мыши, изменение, выбор, отправка, нажатие клавиши, нажатие клавиши, нажатие клавиши и ошибка.

Мне нужно обрабатывать события вырезания, копирования и вставки.Как лучше всего это сделать?Кстати, мне нужно беспокоиться только о WebKit (мне повезло!).

ОБНОВЛЯТЬ:Я работаю над «виджетом» в среде, похожей на панель мониторинга.Он использует WebKit, поэтому (для моих целей) имеет значение только то, поддерживаются ли там эти события, и, похоже, так оно и есть.

Это было полезно?

Решение

Вы можете добавлять и удалять события любого вида, используя .on () и off () методы

Попробуйте это, например,

jQuery(document).on('paste', function(e){ alert('pasting!') });

jQuery на самом деле совершенно безразличен к тому, поддерживается ли назначаемый вами тип события браузером, поэтому вы можете назначать произвольные типы событий элементам (и общим объектам), таким как:

jQuery('p').on('foobar2000', function(e){ alert(e.type); });

В случае пользовательских типов событий вы должны .trigger () их "вручную" в вашем коде, вот так:

jQuery('p').trigger('foobar2000');

Аккуратно, а?

Кроме того, для работы с проприетарными / настраиваемыми событиями DOM кросс-браузерным способом вам может потребоваться использовать / написать «плагин событий jQuery». ... пример которого можно увидеть в jquery.event. wheel.js Брэндона Аарона плагин колесика мыши

Другие советы

Различные события буфера обмена доступны в Javascript, хотя поддержка не очень заметна. QuicksMode.org имеет сетку совместимости и тестовая страница . События не предоставляются через jQuery, поэтому вам придется либо расширять библиотеку, либо использовать собственные события Javascript.

Mozilla поддерживает " ввод " событие, для которого у меня возникли проблемы с поиском полезной документации. По крайней мере, я знаю, что он стреляет из пасты.

   this.addEventListener('input',
    function(){//stuff here},
    false
   );

В качестве jQuery 1.7 вы можете использовать связывать(...) и отвязать (...) методы для прикрепления и удаления соответственно обработчиков.

Вот примеры, соответствующие вашему вопросу:

$('#someElementId').bind('paste', function(){return false;});

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

$('#someElementId').bind('copy', function(){return alert('Hey fella! Do not forget about copyrights!');});

Итак, в других случаях, когда вы хотите удалить эти обработчики, вы можете использовать отвязать() метод:

$('#someElementId').unbind('copy');

Вот несколько полезных ссылок:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top