2011-06-23 11 views
6

Tengo un iframe cargando en una página primaria. El iframe contiene una secuencia de formularios, y me gustaría tomar medidas en la página principal cada vez que el contenido del iframe se vuelva a cargar (es decir, después de que se envíe un formulario en el contenido del iframe). El código actual se encuentra en la página principal y funciona en todos los grandes jugadores, excepto en IE (solo me interesa IE 7 & 8).iframe onload en IE7/8 con Javascript

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

¿Qué me hace falta para evitar que esto sea efectivo en IE?

+0

Intente hacer referencia al documento del iframe: var iframe = document.getElementById ('theiframe'). Document; (no es una respuesta porque supongo :)) – Cfreak

Respuesta

4

Reemplazar:

iframe.onload = refresh 

con:

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


Para despejar cualquier confusión:

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

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

¿Hay alguna diferencia entre 'load' y' onload'? –

+0

IE llama al evento onload, mientras que otros navegadores lo llaman carga. – Joe

+0

Terminé añadiendo una cláusula 'else if (iframe.addEventListener) ...' antes del final. ¡Buena llamada! –

1

se le puede llamar desde el iframe llamando parent.refresh() cuando haya terminado con un envío.

+0

Aunque finalmente tengo control sobre el elemento primario y el iframe, modificar el iframe de cualquier manera es prohibitivamente difícil. –

+1

bien, pero a veces el evento 'onload' se dispara, mientras que todo el trabajo no se realiza en' iframe'. Encontré que agregar el comando "Estoy terminado" en el iframe es más confiable para todos los navegadores. – Mic

+0

En este caso, no importa si los contenidos del iframe (recursos, DOM, etc.) están o no terminados de cargarse, solo importa que "el usuario haya comenzado a ver una página nueva". Gran punto sin embargo. –

Cuestiones relacionadas