Saya memiliki timer di JavaScript saya yang perlu meniru mengklik tautan untuk pergi ke halaman lain begitu waktu berlalu. Untuk melakukan ini saya menggunakan click()
fungsi jQuery . Saya telah menggunakan $().trigger()
dan window.location
juga, dan saya bisa membuatnya berfungsi sebagaimana dimaksud dengan ketiganya.
Saya telah mengamati beberapa perilaku aneh click()
dan saya mencoba memahami apa yang terjadi dan mengapa.
Saya menggunakan Firefox untuk semua yang saya jelaskan dalam pertanyaan ini, tetapi saya juga tertarik pada apa yang akan dilakukan browser lain dengan ini.
Jika saya belum pernah menggunakan $('a').bind('click',fn)
atau $('a').click(fn)
mengatur pengendali acara, maka menelepon $('a').click()
sepertinya tidak melakukan apa-apa sama sekali. Itu tidak memanggil penangan default browser untuk acara ini, karena browser tidak memuat halaman baru.
Namun, jika saya menetapkan event handler terlebih dahulu, maka itu berfungsi seperti yang diharapkan, bahkan jika event handler tidak melakukan apa-apa.
$('a').click(function(){return true;}).click();
Ini memuat halaman baru seolah-olah saya telah mengklik a sendiri.
Jadi pertanyaan saya ada dua: Apakah ini perilaku aneh karena saya melakukan sesuatu yang salah di suatu tempat? dan mengapa menelepon tidak click()
melakukan apa-apa dengan perilaku default jika saya belum membuat handler sendiri?
EDIT:
Seperti yang ditentukan Hoffman ketika dia mencoba menduplikasi hasil saya, hasil yang saya jelaskan di atas tidak benar-benar terjadi. Saya tidak yakin apa yang menyebabkan peristiwa yang saya amati kemarin, tetapi saya yakin hari ini bukan itu yang saya jelaskan dalam pertanyaan.
Jadi jawabannya adalah Anda tidak bisa "memalsukan" klik di peramban dan yang dilakukan semua jQuery adalah memanggil pengendali acara Anda. Anda masih dapat menggunakan window.location
untuk mengubah halaman, dan itu berfungsi dengan baik untuk saya.