2013-03-03 11 views
5

Po wywołaniu zdarzenia wklejania przy użyciu .trigger(), następne przechwycone zdarzenie wklejania nie ma właściwości .originalEvent. Czy to oczekiwane zachowanie? Czemu?Zdarzenie wklejania wyzwalane ręcznie nie ma właściwości .originalEvent?

Zobacz przykład - http://jsfiddle.net/2uxEr/

<textarea>Paste something here</textarea> 
<button>Click for fake trigger</button> 

$('textarea').on("paste", function(e){ 

    alert(e.hasOwnProperty("originalEvent")); 

}); 

$('button').click(function(){ 

    $('textarea').trigger("paste"); 

}); 

Odpowiedz

2

zdarzenia jQuery nie będzie miał właściwość originalEvent gdyby były uruchamiane ręcznie. Jak mogli? originalEvent jest obiektem zdarzenia utworzonym przez przeglądarkę, z której jQuery utworzył obiekt zdarzenia; w zdarzeniu wywołanym ręcznie jQuery sam utworzył obiekt zdarzenia. Nie ma dostępu do originalEvent.

This jsFiddle example pokazuje, jak to jest prawdziwe w przypadku zdarzeń takich jak click, a także paste.

+0

jQuery nie uruchamia natywnego zdarzenia? Jak to działa? – HyShai

+0

@HyShai It [dodaje detektor zdarzeń] (https://github.com/jquery/jquery/blob/master/src/event.js#L104), aby natywne wydarzenie przeglądarki zostało przechwycone. jQuery następnie rozszerza ten obiekt, dodając funkcje i użyteczność i przekazuje go do kodu. – lonesomeday

+0

Mam na myśli metodę .trigger(). Jak wywołuje to wydarzenie? Wywołane zdarzenie rozpoznaje również vanas JS. – HyShai

Powiązane problemy