A causa di come alcune delle nostre pagine funzionano, JS può essere iniettato nella pagina in qualsiasi momento e talvolta questo JS chiude la finestra corrente. Il problema è che ho bisogno di collegare un listener di eventi al onunload della finestra in modo che un valore possa essere restituito dalla finestra alla pagina padre. Ma poiché lo script di chiusura delle finestre può essere iniettato in qualsiasi momento, non posso associare questo evento all'onload a causa di come funziona, quindi speravo di usare DOMContentLoaded poiché quell'evento si innescherebbe prima che lo script venga iniettato.Collega il listener DOMContentLoaded alla finestra creata dinamicamente
Tuttavia nei miei test, non riesco a ottenere nulla da associare a DOMContentLoaded sulla pagina padre in cui viene creata la nuova finestra.
Ecco un quello che sto attualmente lavorando con: Plunker
Abbiamo solo bisogno di questo per lavorare in Chrome al momento.
Il nostro metodo attuale di fare questo funziona come questo (pseudocodice):
onButtonClick = function(){
win = window.open(...);
win.onload = function(){
win.onunload = function(){
//Bind some function that will get the window's "return value" and pass it to the parent page
//This will never happen if the window closes itself before the page is done loading
};
};
};
Posso usare DOMContentLoaded per realizzare quello che voglio? In tal caso, come posso collegarlo correttamente alla finestra?
Nota: non è possibile associare l'evento "onunload" direttamente alla finestra una volta creata. Sembra che l'evento "onunload" venga attivato due volte (una volta quando si apre la finestra e quando si chiude). Puoi vedere questo accadendo se usi la funzione "bindOnCreate" nel mio esempio.
Grazie, questo ha risolto il problema e chiarito alcuni di quegli altri problemi che stavo avendo. –