2010-12-12 16 views
5

Biblioteka źródłowa jQuery UI zawiera plik jquery.simulate.js do symulacji zdarzeń myszy i klawiatury. Jaka jest korzyść z używania tej funkcji symulacyjnej zamiast używania jQuery event methods podczas testowania rzeczy jQuery UI?Różnica między metodami zdarzenia jquery.simulate.js i jQuery?

+0

Zardoz, metody zdarzeń jquery mogą mieć wszystkie podstawowe potrzebne rzeczy, ale wtyczka może zawierać dużo bardziej zaawansowane rzeczy ... tak zresztą jak na wydarzenia. – kobe

+0

@Jeśli nie możesz zrobić czegoś samemu i jeśli ktoś już to zrobił dla Ciebie, możesz przejść do ... wtyczki – kobe

+0

@gov ... Nie widzę żadnych zaawansowanych rzeczy. Wydaje mi się, że oba wywołują te same zdarzenia. Może ktoś z zespołu jQuery UI jest tutaj, aby odpowiedzieć na to pytanie. – Zardoz

Odpowiedz

4

Plik jquery.simulate.js służy tylko do symulacji zdarzeń - nie zapewnia pełnego systemu zarządzania zdarzeniami, takiego jak jQuery. Oznacza to, że tworzy fałszywy obiekt zdarzenia, a następnie wysyła to zdarzenie do DOM. Można to porównać do metody jQuery z .trigger(), która robi to samo.

Jednak istnieje wiele właściwości obiektu zdarzenia, które można modyfikować, w tym, czy powinny one być bąbelkami, czy nie, jaki był element źródłowy, czy zostały naciśnięte specjalne klawisze, dokładne lokalizacje x i y kliknięcia myszy , i tak dalej. jQuery ukrywa to przed nami, gdy wywołujemy .trigger(), ustawiając tylko niezbędne właściwości dla niektórych wartości domyślnych. jquery.simulate.js z drugiej strony jest przeznaczony do testowania testowania (należy zauważyć, że plik znajduje się pod "jquery-ui/tests /"). Do celów testowania potrzebna jest dokładniejsza kontrola nad obiektem zdarzenia, aby lepiej naśladować rzeczywistą interakcję użytkownika.

Krótko mówiąc, chyba że przeprowadzasz testy, najprawdopodobniej w ogóle nie będziesz potrzebował jquery.simulate.js. Nawet jeśli chcesz korzystać z niektórych funkcjonalności, pamiętaj, że plik nie jest oficjalnie częścią biblioteki jquery-ui.

+1

-1. Brakowało ci tutaj bardzo ważnego punktu. Funkcja .trigger() wywoływałaby tylko procedury obsługi zdarzeń, jeśli takie istnieją, dla zdarzeń klawiatury i faktyczne zdarzenia klawiatury byłyby wyzwalane. Dla np. - jeśli muszę wyzwolić zdarzenie klawiatury backspace tak, że ostatni znak elementu zostanie usunięty, wtedy wciśnięcie klawisza keypress/keydown/keyup zdarzenia, którego keyCode = 8 nie zadziała. Za pomocą tego pliku jquery.simulate.js można to zrobić.https: //github.com/j-ulrich/jquery-simulate-ext został zbudowany na bibliotece thsi lib. –

+0

Proszę lemme wiedzieć, jeśli za pomocą .trigger() jesteś w stanie osiągnąć faktyczny naciśnięcie klawisza. Muszę wdrożyć to samo. –

Powiązane problemy