Как вы обрабатываете oncut, oncopy и onpaste в jQuery?
The документация jQuery говорит, что библиотека имеет встроенную поддержку для следующих событий: размытие, фокус, загрузка, изменение размера, прокрутка, выгрузка, щелчок, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, изменение, выбор, отправка, keydown, нажатие клавиши, keyup и ошибка.
Мне нужно обрабатывать вырезать, копировать и вставлять события. Как лучше всего это сделать? FWIW, мне нужно только беспокоиться о WebKit (lucky me!).
обновление: я работаю над a "виджет" в среде, подобной панели мониторинга. Он использует WebKit, поэтому действительно важно (для моих целей), поддерживаются ли эти события там, что похоже на них.
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');
вот некоторые полезные ссылки: