it-swarm.com.de

Wie gehen Sie mit oncut, oncopy und onpaste in jQuery um?

In der jQuery-Dokumentation wird angegeben, dass die Bibliothek die folgenden Ereignisse unterstützt: Unschärfe, Fokus, Laden, Ändern der Größe, Scrollen, Entladen, Klicken, Doppelklick, Mouse-down, Mouse-up, Mouse-Move, Mouse-Over, Mouse-out, Mouse-Eingabe , Maus, ändern, auswählen, senden, herunterfahren, drücken, hochfahren und Fehler.

Ich muss Ereignisse ausschneiden, kopieren und einfügen. Wie geht das am besten? FWIW, ich brauche mich nur um WebKit zu kümmern (Glück!).

UPDATE: Ich arbeite an einem "Widget" in einer Dashboard-ähnlichen Umgebung. Da WebKit verwendet wird, ist es (für meine Zwecke) nur wichtig, ob diese Ereignisse dort unterstützt werden, wie es aussieht.

65
Andrew Hedges

Sie können Ereignisse jeder Art mit den Methoden .on() und off() hinzufügen und entfernen

Versuchen Sie dies zum Beispiel

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

jQuery ist eigentlich ziemlich gleichgültig, ob der von Ihnen zugewiesene Ereignistyp vom Browser unterstützt wird, sodass Sie Elementen (und allgemeinen Objekten) beliebige Ereignistypen zuweisen können, z.

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

Bei benutzerdefinierten Ereignistypen müssen Sie .trigger() sie "manuell" in Ihrem Code wie folgt eingeben:

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

Ordentlich wie?

Um mit proprietären/benutzerdefinierten DOM-Ereignissen browserübergreifend zu arbeiten, müssen Sie möglicherweise ein "jQuery-Ereignis-Plugin" verwenden/schreiben. Ein Beispiel dafür finden Sie in jquery.event.wheel.js Brandon Aarons Mausrad-Plugin

91
Már Örlygsson

Verschiedene Ereignisse in der Zwischenablage sind in Javascript verfügbar, die Unterstützung ist jedoch unvollständig. QuicksMode.org hat ein Kompatibilitätsraster und Testseite . Die Ereignisse werden nicht über jQuery verfügbar gemacht, daher müssen Sie entweder die Bibliothek erweitern oder native JavaScript-Ereignisse verwenden.

14
dansays

Mozilla unterstützt ein "Eingabe" -Ereignis, für das ich keine nützliche Dokumentation finde. Zumindest weiß ich, dass es auf Paste brennt.

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

Als jQuery 1.7 können Sie binden (...) und binden (...) Methoden zum Anhängen bzw. Entfernen von Handlern.

Hier sind Beispiele, wie Sie Ihre Frage ausrichten können:

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

- Dieser blockiert alle Versuche, aus der Zwischenablage in den Elementkörper einzufügen. Sie können auch Ausschneiden , Kopieren und andere als Ereignistypen verwenden (siehe Links unten)

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

In anderen Fällen können Sie zum Entfernen dieser Handler die Methode uncind () verwenden:

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

Hier einige nützliche Links:

1
Yan Pak