Como você lida oncut, oncopy e onpaste em jQuery?

A documentação do jQuery diz que a biblioteca tem suporte embutido para os seguintes events: desfocar, focar, carregar, resize, rolar, descarregar, clicar, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, enviar, keydown, keypress, keyup e erro.

Eu preciso lidar com events de recortar, copiar e colar. Qual a melhor maneira de fazer isso? FWIW, eu só preciso me preocupar com o WebKit (sorte minha!).

ATUALIZAÇÃO: Estou trabalhando em um “widget” em um ambiente semelhante ao Dashboard. Ele usa o WebKit, então só importa realmente (para meus propósitos) se esses events são suportados lá, o que parece que eles são.

    Você pode adicionar e remover events de qualquer tipo usando os methods .on() e off()

    Tente isso, por exemplo

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

    Na verdade, jQuery é bastante indiferente se o tipo de evento que você atribui é suportado pelo navegador, portanto, é possível atribuir tipos de events arbitrários a elementos (e objects gerais), como:

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

    No caso de tipos de events personalizados, você deve .trigger() “manualmente” em seu código, assim:

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

    Puro eh?

    Além disso, para trabalhar com events DOM personalizados / personalizados de uma maneira compatível com vários navegadores, você pode precisar usar / escrever um “plugin de evento jQuery” … exemplo do que pode ser visto em jquery.event.wheel.js Plugin Mousewheel de Brandon Aaron

    Vários events da área de transferência estão disponíveis em Javascript, embora o suporte seja irregular. O QuicksMode.org possui uma grade de compatibilidade e uma página de teste . Os events não são expostos através do jQuery, portanto você terá que estender a biblioteca ou usar events Javascript nativos.

    O Mozilla suporta um evento “input” que estou tendo problemas para encontrar documentação útil. No mínimo, sei que triggers em pasta.

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

    Como jQuery 1.7, você pode usar os methods bind (…) e unbind (…) para append e remover, respectivamente, manipuladores.

    Aqui estão alguns exemplos para alinhar sua missão:

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

    – Este bloqueará qualquer tentativa de colar da área de transferência no corpo do elemento. Você também pode usar recortar , copiar e outros como tipos de evento (veja os links abaixo)

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

    Então, em outros casos, quando você deseja remover esses manipuladores, você pode usar o método unbind () :

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

    Aqui alguns links úteis:

    • ligar()
    • desvincular ()
    • lista completa de tipos de events