Pergunta

O jQuery documentação diz que a biblioteca tem suporte embutido para os seguintes eventos: borrão, foco, de carga, de redimensionamento, rolar, descarregar, clique, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, mudança, selecionar, apresentar, keydown, keypress, keyup, e erro.

Eu preciso lidar com cortar, copiar e colar eventos. Qual a melhor forma de fazer isso? FWIW, eu só precisa se preocupar com WebKit (me sorte!).

UPDATE: Eu estou trabalhando em um "Widget" em um ambiente de Painel-like. Ele usa WebKit, por isso só realmente importa (para os meus propósitos) se estes eventos são suportados lá, que parece que eles estão.

Foi útil?

Solução

Você pode adicionar e remover eventos de qualquer espécie, utilizando o .on() e métodos off()

Tente este, por exemplo

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

jQuery é bastante indiferente ao fato do tipo de evento que você atribui é suportado pelo navegador, de modo que você pode atribuir tipos de eventos arbitrários para elementos (e objetos em geral), tais como:

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

Em caso de tipos de evento personalizado, você deve .trigger() -los "manualmente" em seu código, como este :

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

Neat eh?

Além disso, trabalhar com eventos DOM / custom proprietárias de uma forma compatível cross-browser, você pode precisar usar / escrever um "plug-in evento jQuery" ... exemplo do que pode ser visto em jquery.event.wheel.js Mousewheel plug-in

Outras dicas

Vários eventos da área de transferência estão disponíveis em Javascript, embora o apoio é irregular. QuicksMode.org tem uma href="http://www.quirksmode.org/dom/events/cutcopypaste.html" rel="noreferrer"> grade compatibilidade e página de teste . Os eventos não são expostos através de jQuery, então você quer ter de estender a biblioteca ou usar os eventos nativos Javascript.

Mozilla suporta um evento "input" que eu estou tendo dificuldades para encontrar documentação útil para. No mínimo, eu sei que dispara na pasta.

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

Como jQuery 1.7 você pode usar bind (...) e UNBIND (...) métodos para anexar e remover respectivamente manipuladores.

Aqui estão alguns exemplos alinhar sua questuion:

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

- este irá bloquear qualquer tentativa para colar da área de transferência no corpo elemento. Você pode usar também corte , Copiar e outros como tipos de eventos (ver links abaixo)

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

Assim, em outros casos, quando você quer remover os manipuladores, você pode usar unbind () método:

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

aqui alguns links úteis:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top