Ho un timer nel mio JavaScript che deve emulare facendo clic su un collegamento per passare a un'altra pagina allo scadere del tempo. Per fare ciò sto usando la click()
funzione di jQuery . Ho usato $().trigger()
e window.location
anche, e posso farlo funzionare come previsto con tutti e tre.
Ho osservato alcuni comportamenti strani con click()
e sto cercando di capire cosa succede e perché.
Sto usando Firefox per tutto ciò che descrivo in questa domanda, ma sono anche interessato a ciò che altri browser faranno con questo.
Se non ho usato $('a').bind('click',fn)
o $('a').click(fn)
per impostare un gestore eventi, quindi chiamare$('a').click()
sembra non fare nulla. Non chiama il gestore predefinito del browser per questo evento, poiché il browser non carica la nuova pagina.
Tuttavia, se imposto prima un gestore eventi, allora funziona come previsto, anche se il gestore eventi non fa nulla.
$('a').click(function(){return true;}).click();
Questo carica la nuova pagina come se avessi fatto clic su a me stesso.
Quindi la mia domanda è duplice: questo strano comportamento è perché sto facendo qualcosa di sbagliato da qualche parte? e perché chiamare non click()
fa nulla con il comportamento predefinito se non ho creato un gestore per conto mio?
MODIFICARE:
Come ha determinato Hoffman quando ha cercato di duplicare i miei risultati, il risultato che ho descritto sopra non accade in realtà. Non sono sicuro di ciò che ha causato gli eventi osservati ieri, ma sono certo oggi che non era quello che ho descritto nella domanda.
Quindi la risposta è che non è possibile "falsificare" i clic nel browser e che tutto ciò che jQuery fa è chiamare il gestore dell'evento. Puoi ancora usare window.location
per cambiare pagina, e per me funziona benissimo.