Domanda

La documentazione jQuery afferma che la biblioteca ha un supporto integrato per i seguenti eventi: sfocatura, messa a fuoco, caricamento, ridimensionamento, scorrimento, scarico, clic, doppio clic, mouse, mouseup, mouse, mouseover, mouseout, mouseenter, mouseleave, modifica, selezione, invio, keydown, keypress, keyup ed errore.

Devo gestire gli eventi taglia, copia e incolla. Il modo migliore per farlo? FWIW, ho solo bisogno di preoccuparmi di WebKit (fortunato me!).

AGGIORNAMENTO: sto lavorando su un " widget " in un ambiente simile a un dashboard. Utilizza WebKit, quindi importa davvero (per i miei scopi) se questi eventi sono supportati lì, come sembra che siano.

È stato utile?

Soluzione

Puoi aggiungere e rimuovere eventi di qualsiasi tipo utilizzando .on () e off () metodi

Prova questo, ad esempio

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

jQuery in realtà è abbastanza indifferente dal fatto che il tipo di evento assegnato sia supportato dal browser, quindi è possibile assegnare tipi di eventi arbitrari a elementi (e oggetti generali) come:

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

In caso di tipi di eventi personalizzati, devi .trigger () loro "manualmente" nel tuo codice, in questo modo:

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

Neat eh?

Inoltre, per lavorare con eventi DOM proprietari / personalizzati in modo compatibile con più browser, potrebbe essere necessario utilizzare / scrivere un plug-in di eventi " jQuery " ... di cui un esempio può essere visto in jquery.event. wheel.js Plugin rotellina del mouse

di Brandon Aaron

Altri suggerimenti

Diversi eventi degli Appunti sono disponibili in Javascript, anche se il supporto è discutibile. QuicksMode.org ha una griglia di compatibilità e pagina di prova . Gli eventi non sono esposti tramite jQuery, quindi dovrai estendere la libreria o utilizzare eventi Javascript nativi.

Mozilla supporta un " input " evento per il quale ho difficoltà a trovare documentazione utile per. Per lo meno, so che si attiva sulla pasta.

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

Come jQuery 1.7 puoi utilizzare i metodi bind (...) e unbind (...) per collegare e rimuovere rispettivamente i gestori.

Ecco alcuni esempi per allineare la tua missione:

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

- questo bloccherà qualsiasi tentativo di incollare dagli appunti nel corpo dell'elemento. Puoi anche utilizzare taglia , copia e altri come tipi di eventi (vedi link sotto)

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

Quindi, in altri casi, quando vuoi rimuovere quei gestori, puoi usare il metodo unbind () :

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

Ecco alcuni link utili:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top