2011-06-23 24 views
6

Ho un caricamento di iframe in una pagina padre. L'iframe contiene una sequenza di moduli e mi piacerebbe intervenire sulla pagina madre ogni volta che il contenuto dell'iframe viene ricaricato (cioè, dopo che un modulo è stato inviato nel contenuto dell'iframe). Il codice corrente si trova nella pagina principale e funziona in tutti i grandi giocatori tranne IE (mi interessa solo con IE 7 & 8).onload iframe in IE7/8 con Javascript

var iframe = document.getElementById('theiframe'); 
function refresh() { 
    alert('foo'); 
} 
if (iframe.attachEvent) iframe.attachEvent('onload', refresh); 
else iframe.onload = refresh; 

Cosa mi manca che impedirebbe che questo sia efficace in IE?

+0

Provare a fare riferimento al documento dell'iframe: var iframe = document.getElementById ('theiframe'). Document; (non una risposta perché sto indovinando :)) – Cfreak

risposta

4

Sostituire:

iframe.onload = refresh 

con:

iframe.attachEvent('load', refresh, false); 


Per cancellare qualsiasi confusione:

var iframe = document.getElementById('theiframe'); 
function refresh() { 
    alert('foo'); 
} 

if (iframe.attachEvent) iframe.attachEvent('onload', refresh); 
else iframe.addEventListener('load', refresh, false) 
+0

C'è una differenza tra 'load' e' onload'? –

+0

IE chiama l'evento onload, mentre altri browser lo chiamano carico. – Joe

+0

Ho finito per aggiungere una clausola 'else if (iframe.addEventListener) ...' prima della fine. Buona chiamata! –

1

si può chiamare dal iframe chiamando parent.refresh() quando si è fatto con un submit.

+0

Anche se alla fine ho il controllo sia del genitore che dell'iframe, la modifica dell'iframe in qualche modo è proibitiva. –

+1

ok, ma a volte l'evento "onload" si attiva, mentre tutto il lavoro non viene eseguito nell '"iframe". Ho trovato l'aggiunta del comando "I'm done" nell'iframe più affidabile per tutti i browser. – Mic

+0

In questo caso non importa che i contenuti iframe (risorse, DOM, ecc.) Siano o non siano stati caricati, è importante che "l'utente abbia iniziato a visualizzare una nuova pagina". Ottimo punto però. –

Problemi correlati