2011-06-23 10 views
6

Mam element iframe ładujący stronę nadrzędną. Element iframe zawiera ciąg formularzy i chciałbym podjąć działanie na stronie nadrzędnej za każdym razem, gdy zawartość elementu iframe została ponownie załadowana (tj. Po przesłaniu formularza w treści elementu iframe). Obecny kod znajduje się na stronie nadrzędnej i działa we wszystkich dużych graczach z wyjątkiem IE (dotyczy to tylko IE 7 & 8).iframe onload w IE7/8 z Javascriptem

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

Czego mi brakuje, aby zapobiec temu efektowi w IE?

+0

Spróbuj odwołać się do dokumentu elementu iframe: var iframe = document.getElementById ('theiframe'). Document; (nie jest to odpowiedź, ponieważ zgaduję :)) – Cfreak

Odpowiedz

4

Wymienić:

iframe.onload = refresh 

z:

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


Aby usunąć wszelkie nieporozumienia:

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

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

Czy istnieje różnica między 'load' i' onload'? –

+0

IE wywołuje zdarzenie onload, podczas gdy inne przeglądarki wymagają jego ładowania. – Joe

+0

Zlikwidowałem dodawanie klauzuli "else if (iframe.addEventListener) ..." przed końcem. Dobra decyzja! –

1

można nazwać to z iframe wywołując parent.refresh() gdy skończysz z przesłaniem.

+0

Chociaż w końcu mam kontrolę nad rodzicem i ramką iframe, modyfikowanie elementu iframe w jakikolwiek sposób jest niezwykle trudne. –

+1

ok, ale czasami uruchamiane jest zdarzenie 'onload', a całe zadanie nie jest wykonywane w elemencie iframe. Zauważyłem, że dodanie polecenia "Gotowe" w elemencie iframe jest bardziej niezawodne we wszystkich przeglądarkach. – Mic

+0

W tym przypadku nie ma znaczenia, że ​​zawartość elementu iframe (zasoby, DOM itp.) Jest załadowana lub nie została załadowana, ale ma znaczenie, że "użytkownik rozpoczął przeglądanie nowej strony." Świetny punkt chociaż. –

Powiązane problemy