Ho una pagina che esegue vari codici javascript, compresa la chiamata setTimeout()
. Se un utente fa clic su un link per navigare verso un'altra pagina, a che punto il javascript su questa pagina smette di funzionare e quindi il mio codice chiamato da setTimeout non verrà più chiamato? per esempio.Quando javascript interrompe l'esecuzione su una pagina dopo aver fatto clic su un collegamento?
- non appena il link viene cliccato (So che questo è sbagliato)
- quando il browser inizia a ricevere la nuova pagina
- qualche altro punto?
Ed è diverso per i diversi principali browser?
Sfondo
Voglio sapere questo in gran parte per il bene di interesse, piuttosto che per risolvere qualsiasi problema particolare. Il problema che mi ha spinto a pensarci è che vorrei fare qualcosa quando un utente fa clic su un particolare link in una pagina. Voglio eseguire una chiamata Ajax e elaborare il risultato, ma non sono troppo preoccupato se finisce prima che la pagina venga scaricata. Quindi farò scattare un setTimeout() sul link click e poi se sarò fortunato finirà ma se non lo farò non lo farò. Mi chiedevo in quali circostanze avrebbe funzionato. Mentre ci possono essere altre soluzioni a questo problema, non voglio soluzioni al problema, voglio solo sapere la risposta alla domanda.
Probabilmente subito dopo [evento onunload] (https://developer.mozilla.org/en-US/docs/DOM/window.onunload), ma perché è così importante per te? –
_Che browser? –
I * timer attivi * (a cui "setTimeout" viene aggiunto) vengono cancellati durante il ['scarico dei passaggi di pulizia del documento'] (http://www.w3.org/TR/html5/browsers.html#unloading-document-cleanup -steps), che vengono chiamati (tra gli altri) dalla ['download document procedure'] (http://www.w3.org/TR/html5/browsers.html#unload-a-document).Tuttavia non sono sicuro quando esattamente questi sono chiamati durante un processo di navigazione (http://www.w3.org/TR/html5/browsers.html#navigating-across-documents) – Bergi