Question

La documentation jQuery indique que la bibliothèque prend en charge de manière intégrée les événements suivants: flou, focus, charger, redimensionner, défiler, décharger, clic, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, changer, sélectionner, envoyer, touche enfoncée, touche enfoncée, touche enfoncée, et erreur.

Je dois gérer les événements Couper, Copier et Coller. Comment mieux faire ça? FWIW, je n'ai plus qu'à m'inquiéter de WebKit (chanceux moi!).

UPDATE: je travaille sur un " widget " dans un environnement de type tableau de bord. Il utilise WebKit, donc il importe vraiment (pour mes besoins) que ces événements soient pris en charge là-bas, ce qui semble être le cas.

Était-ce utile?

La solution

Vous pouvez ajouter et supprimer des événements de tout type en utilisant le .on () et méthodes off ()

Essayez ceci, par exemple

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

jQuery est en fait assez indifférent quant à savoir si le type d'événement que vous affectez est pris en charge par le navigateur. Vous pouvez donc affecter des types d'événement arbitraires à des éléments (et des objets généraux) tels que:

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

En cas de type d'événement personnalisé, vous devez .trigger () . eux " manuellement " dans votre code, comme ceci:

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

Neat hein?

De plus, pour utiliser des événements DOM propriétaires / personnalisés de manière compatible avec plusieurs navigateurs, vous devrez peut-être utiliser / écrire un "plug-in d'événement jQuery". ... Cet exemple est visible dans jquery.event. wheel.js du plugin Mousewheel de Brandon Aaron

Autres conseils

Différents événements du presse-papiers sont disponibles en Javascript, bien que le support soit incomplet. QuicksMode.org possède une grille de compatibilité et page de test . Les événements ne sont pas exposés via jQuery. Vous devrez donc étendre la bibliothèque ou utiliser des événements Javascript natifs.

Mozilla prend en charge une "entrée". événement pour lequel j’ai du mal à trouver de la documentation utile. À tout le moins, je sais que ça se déclenche sur la pâte.

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

En tant que jQuery 1.7, vous pouvez utiliser les méthodes bind (...) et unbind (...) pour attacher et supprimer respectivement les gestionnaires.

Voici des exemples pour aligner votre question:

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

- celui-ci bloquera toute tentative de coller du presse-papiers dans le corps de l'élément. Vous pouvez également utiliser couper , copier et d'autres types d'événements (voir les liens ci-dessous)

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

Ainsi, dans d'autres cas, lorsque vous souhaitez supprimer ces gestionnaires, vous pouvez utiliser la méthode unbind () :

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

Voici quelques liens utiles:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top