2013-05-21 3 views
32

Attualmente sono immerso nel centro di apprendimento jQuery. Sto andando dall'inizio alla fine.event.originalEvent jQuery

Ho appena letto this paragraph:

E 'anche importante notare che l'oggetto evento contiene una proprietà denominata originalEvent, che è l'oggetto evento che il browser stesso creato. jQuery esegue il wrapping di questo oggetto evento nativo con alcuni utili metodi e proprietà , ma in alcuni casi è necessario accedere all'evento tramite event.originalEvent, ad esempio. Questo è particolarmente utile per gli eventi tattili su dispositivi mobili e tablet.

L'ultima frase, 'Questo è particolarmente utile per gli eventi tattili su dispositivi mobili e tablet.', ha davvero acceso il mio interesse. ma questo è tanto quanto il centro di apprendimento va fino a originalEvent finora.

Qualcuno sa di buone risorse per uno studio/pratica più intensivo per event.originalEvent in particolare in relazione a eventi di tocco/dispositivi mobili?

risposta

33

event.originalEvent di solito è solo il numero nativo event (anche descritto here).

Tuttavia, se il browser è compatibile e l'evento era un touch event, tale API verrà esposta tramite event.originalEvent.

La risposta breve è che event.originalEvent non è sempre lo stesso, dipende da quale tipo di evento ha attivato il gestore e dall'ambiente del browser.

+0

Cosa intendi per "evento nativo"? In contrasto con ciò? –

+1

@ chopperdrawlion4 La classe evento definita dal browser (ad esempio 'window.Event'), in contrasto con la classe jQuery che definisce (ad esempio' jQuery.Event'/'$ .Event'). – 1j01

+1

Si prega di notare che 'evento.originalEvent' può essere presente in alcune circostanze e non in altre, consentendo in alcune circostanze di [verificare come è stato attivato un gestore eventi] (https://stackoverflow.com/a/10255830/3478010). –

10

Ho un caso che ho bisogno di usare event.originalEvent il problema stava cercando di ottenere un'istanza di un file rilasciato tramite drag and drop utilizzando l'evento di rilascio, questo è quello che è successo

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

mentre la scrittura

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

ciò significa jQuery non va a capo l'evento browser nativo con tutte le sue API, come l'API File in questo esempio, in modo da ottenere l'accesso a tho Se escluso proprietà e funzioni dall'evento jQuery, dobbiamo usare event.originalEvent. Spero che aiuti qualcuno.

+1

Mi è capitato di usare anche questo event.originalEvent. La mia situazione è quando passo un evento paste a una funzione in js, il browser Firefox ha bisogno di questo event.originalEvent.clipboardData per ottenere il testo incollato. event.clipboaradData non è definito. IE sembra avere un risultato diverso però. –

0

jQuery riconosce gli eventi standard e li adatta per browser diversi. ma quando non c'è un evento standard jQuery non riesce a conformarsi all'oggetto evento ma ha un valore sicuro originalEvent che mantiene l'oggetto servito originale dal browser.

per esempio mousewheel e DOMMouseScroll necessario event.originalEvent, poiché non c'è supporto per evento ruota.