C'è un gancio facile per rilevare che una finestra aperta da uno script ha terminato il caricamento? Fondamentalmente, voglio l'equivalente del gancio onLoad()
, ma non posso impostarlo direttamente - presuppongo che il documento figlio sia un dato e non posso inserire alcun codice personale.In attesa del caricamento della finestra figlio per il completamento
Ad esempio, dire che ho i seguenti due file:
parent.html
:
<html>
<head>
<title>Parent</title>
</head>
<script type="text/javascript">
var w;
function loadChild() {
w = window.open();
w.location.href="child.html";
// block until child has finished loading... how?
w.doSomething();
}
</script>
</html>
<body>
I am a parent window. <a href="javascript:loadChild()">Click me</a>.
</body>
child.html
:
<html>
<head>
<title>Child</title>
</head>
<script type="text/javascript">
function doSomething() {
alert("Hi there");
}
</script>
</html>
<body>
I am a child window
</body>
Dal impostazione location.href è non-blocking, w.doSomething()
isn' t definito ancora e la chiamata doSomething()
esplode. Come posso rilevare che il bambino ha terminato il caricamento?
Puoi chiarire" same-origin "? Non sembra funzionare con' file: /// 'URL nella mia casella locale, ma forse è una cosa di sicurezza? –
Sì, probabilmente. Nel browser, la stessa origine significa fondamentalmente che il target deve essere sullo stesso host_host e sa me _protocol_. Lo stai mescolando con 'http: //', forse? –
Ho dimenticato di aggiungere che 'addEventLister' non è supportato in IE, quindi usare jQuery come suggerisce gabtub (o un altro framework JS che risolve le incompatibilità del browser per la gestione degli eventi) è probabilmente una buona idea ... –