2012-12-11 6 views
16

Essenzialmente quello che mi piacerebbe fare è qualcosa per l'effetto di questo:C'è un modo per avere un callback onload dopo aver cambiato window.location.href?

window.location.href = "some_location"; 
window.onload = function() { 
    alert("I'm the new location and I'm loaded!"); 
}; 

C'è un modo per avere un callback quando nuova posizione della finestra viene caricato? (Il codice sopra riportato non funziona.)

+1

cambiando 'location.href' si chiude la pagina corrente e si apre una nuova pagina in modo che nessun evento sulla vecchia pagina non possa essere attivato quando viene caricata una nuova pagina – qwertymk

risposta

15

No, non puoi farlo nel modo che preferisci. Il caricamento di una nuova pagina chiude il documento corrente e inizia a caricare un nuovo documento. Qualsiasi codice nel documento corrente non sarà più attivo quando la nuova pagina inizia a caricarsi.

Per avere un gestore eventi quando viene caricato il nuovo documento, è necessario inserire il codice nel documento della nuova pagina o caricare il nuovo documento in un iframe e monitorare il caricamento dell'iframe dal documento corrente.

+1

Cosa succede se la finestra è una nuova finestra: var w = window.open (""); w.location.href = "some_location"; w.onload = function() {alert ("Ciao!");}; Supponiamo che ci sia un motivo reale per cui ho bisogno di usare un reindirizzamento invece di limitarmi ad aprire direttamente all'URL, come se dovessi reindirizzare sulla risposta di una richiesta o qualcosa del genere. C'è qualche modo allora? – Lukas

+2

@Lukas - se si sta aprendo una nuova finestra (stessa con frame), ci sono restrizioni di sicurezza se le finestre si trovano su domini diversi e non è possibile impostare gestori di eventi in quella finestra. Se le tue finestre si trovano sullo stesso dominio, dovresti essere in grado di impostare un gestore di onload per questo. – jfriend00

+0

Hmmm ... Dai un'occhiata a http://jsfiddle.net/42hKC/ - Sto aprendo una nuova finestra all'interno dello stesso dominio, collegando un onload alla nuova finestra e non viene mai attivato. – Lukas

2

L'impostazione di window.location.href su un nuovo valore indica al browser di andare semplicemente alla pagina successiva.

Come così:

window.location.href = "http://www.google.com/"; 

Una volta che il browser va a google.com, il gioco è fatto, Javascript non è più in esecuzione, e non c'è modo per voi di avere qualsiasi tipo di callback, perché il browser non sta più gestendo la tua pagina.

Quindi, la risposta è no.

+0

Sbagliato. Il mio Javascript è ancora in esecuzione - nella finestra originale che controlla la finestra aggiornata. – 7vujy0f0hy

Problemi correlati