Mam zegar w moim JavaScript, który musi emulować kliknięcie linku, aby przejść do innej strony po upływie czasu. Aby to zrobić, używam funkcji jQuery click()
. Użyłem $().trigger()
i window.location
również i mogę sprawić, że będzie działać zgodnie z przeznaczeniem ze wszystkimi trzema.
Zauważyłem dziwne zachowanie click()
i próbuję zrozumieć, co się dzieje i dlaczego.
Używam Firefoksa do wszystkiego, co opisuję w tym pytaniu, ale interesuje mnie również, co inne przeglądarki będą z tym robić.
Jeśli nie użyłem $('a').bind('click',fn)
ani $('a').click(fn)
nie ustawiłem programu obsługi zdarzeń, wywołanie $('a').click()
wydaje się nic nie robić. Nie wywołuje domyślnej procedury obsługi przeglądarki dla tego zdarzenia, ponieważ przeglądarka nie ładuje nowej strony.
Jeśli jednak najpierw ustawię procedurę obsługi zdarzeń, będzie działać zgodnie z oczekiwaniami, nawet jeśli program obsługi zdarzeń nic nie robi.
$('a').click(function(){return true;}).click();
Spowoduje to załadowanie nowej strony, tak jakbym sam kliknął przycisk a.
Moje pytanie jest więc dwojakie: czy to dziwne zachowanie, ponieważ gdzieś robię coś złego? i dlaczego wywołanie click()
nic nie robi z zachowaniem domyślnym, jeśli nie utworzyłem własnego modułu obsługi?
EDYTOWAĆ:
Jak ustalił Hoffman, próbując powielić moje wyniki, wynik, który opisałem powyżej, w rzeczywistości nie ma miejsca. Nie jestem pewien, co spowodowało wydarzenia, które wczoraj obserwowałem, ale dziś jestem pewien, że nie to opisałem w pytaniu.
Odpowiedź jest taka, że nie można „udawać” kliknięć w przeglądarce i że wszystko, co robi jQuery, to wywoływanie modułu obsługi zdarzeń. Nadal możesz window.location
zmienić stronę, a dla mnie to działa dobrze.