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


The документация jQuery говорит, что библиотека имеет встроенную поддержку для следующих событий: размытие, фокус, загрузка, изменение размера, прокрутка, выгрузка, щелчок, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, изменение, выбор, отправка, keydown, нажатие клавиши, keyup и ошибка.

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

обновление: я работаю над a "виджет" в среде, подобной панели мониторинга. Он использует WebKit, поэтому действительно важно (для моих целей), поддерживаются ли эти события там, что похоже на них.

4 64

4 ответа:

вы можете добавлять и удалять события любого рода с помощью .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.событие.колесо.js Брэндона Аарона плагин колесо

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

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

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

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

вот примеры выравнивания вашего вопроса:

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

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

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

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

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

вот некоторые полезные ссылки: