2013-05-21 2 views
32

Ich bin derzeit in der jQuery Lernzentrum eingetaucht. Ich gehe von Anfang bis Ende.event.originalEvent jQuery

Ich habe gerade gelesen this paragraph:

Es ist auch wichtig, dass das Ereignisobjekt beachten eine Eigenschaft enthält originalEvent genannt, die das Ereignisobjekt ist, dass der Browser selbst erstellt. jQuery umschließt dieses native Ereignisobjekt mit einigen nützlichen Methoden und Eigenschaften von , aber in einigen Fällen müssen Sie beispielsweise über auf das ursprüngliche Ereignis zugreifen. Dies ist besonders nützlich für Touch-Ereignisse auf mobilen Geräten und Tablets.

Der letzte Satz, "Dies ist besonders nützlich für Touch-Ereignisse auf mobilen Geräten und Tablets.", löste wirklich mein Interesse. aber das ist so viel wie das Lernzentrum in originalEvent soweit geht.

Kennt jemand gute Ressourcen für eine intensivere Studie/Praxis für event.originalEvent speziell in Bezug auf Touch-Events/mobile Geräte?

Antwort

33

event.originalEvent ist normalerweise nur der native event (auch here beschrieben). Wenn der Browser jedoch kompatibel ist und das Ereignis touch event war, wird diese API über event.originalEvent verfügbar gemacht.

Die kurze Antwort ist, dass event.originalEvent nicht immer gleich ist, es hängt davon ab, welcher Ereignistyp den Handler ausgelöst hat, und von der Umgebung des Browsers.

+0

Was meinst du mit "natives Ereignis"? Was ist das im Gegensatz zu? –

+1

@ chopperdrawlion4 Die vom Browser definierte Ereignisklasse (d. H. 'Window.Event'), im Gegensatz zur jQuery-Klasse, die sie definiert (d. H.' JQuery.Event'/'$ .Event'). – 1j01

+1

Bitte beachten Sie dieses Ereignis.OriginalEreignis kann unter bestimmten Umständen vorhanden sein und nicht unter anderen Umständen, wodurch es unter bestimmten Umständen möglich ist zu testen, wie ein Ereignishandler ausgelöst wurde (https://stackoverflow.com/a/10255830/3478010). –

10

ich einen Fall haben, die ich brauchte event.originalEvent das Problem zu verwenden versuchte, eine Instanz einer abgelegte Datei per Drag zu bekommen und legen Sie die Drop-Ereignis verwendet wird, ist das, was passiert ist

var files = event.dataTransfer.files; // Gives error: trying to get property of undefined

beim Schreiben

var files = event.originalEvent.dataTransfer.files; // Works fine

das bedeutet jQuery nicht das native Browser Ereignis umbrochen mit all seinen APIs wie das File API in diesem Beispiel so Zugang zu erhalten tho Wenn Eigenschaften und Funktionen aus dem jQuery-Ereignis ausgeschlossen werden, müssen wir event.originalEvent verwenden. Hoffe das hilft jemandem.

+1

Ich habe dieses event.originalEvent auch zufällig benutzt. Meine Situation ist, wenn ich ein Einfügen-Ereignis an eine Funktion in js übergeben, Firefox-Browser benötigt diese event.originalEvent.clipboardData, um den eingefügten Text zu erhalten. event.clipboaradData ist nicht definiert. IE scheint jedoch ein anderes Ergebnis zu haben. –

0

jQuery kennt Standardereignisse und passt sie für verschiedene Browser an. Wenn kein Standardereignis vorhanden ist, kann jQuery das Ereignisobjekt nicht anpassen, verfügt jedoch über eine fehlersichere Funktion originalEvent, die das ursprüngliche serviced Objekt vom Browser verwaltet.

zum Beispiel mousewheel und DOMMouseScroll brauchen event.originalEvent auch, da es keine Unterstützung für Wheel Event gibt.