2011-06-23 19 views
6

Bir üst sayfaya bir iframe yükleniyor. Iframe bir dizi form içeriyor ve iframe içeriğinin her yeniden yüklenmesi sırasında (yani iframe içeriğinde bir form gönderildikten sonra) ana sayfada işlem yapmak istiyorum. Geçerli kod, ana sayfada yer alır ve IE dışındaki tüm büyük oyuncularda çalışır (yalnızca IE 7 & 8 ile ilgilidir).IE7/8'de iframe yükü Javascript ile

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

Bunun IE'de etkili olmasının önlenmesini engelleyen neyim var?

+0

iframe belgesine başvurmayı deneyin: var iframe = document.getElementById ('theiframe'). (bir cevap değil çünkü tahmin ediyorum :)) – Cfreak

cevap

4

değiştirin:

iframe.onload = refresh 

ile: Yapýlmasýný olduğunda parent.refresh() arayarak

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

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

'load' ile' loadload' arasında bir fark var mı? –

+0

IE, olay yükünü çağırır, diğer tarayıcılar ise yük olarak adlandırılır. – Joe

+0

Sondan önce “if if (iframe.addEventListener)…' yan tümcesi eklemeye başladım. İyi arama! –

1

Sen iframe onu arayabilirsiniz:

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


herhangi bir karışıklığa temizlemek için bir gönderme ile.

+0

Nihayetinde hem ebeveyn hem de iframe üzerinde kontrol sahibi olsam da, iframe'i herhangi bir şekilde değiştirmek oldukça zor. –

+1

tamam, ama bazen 'yük' olayı patlar, tüm işler iframe'de yapılmaz. Iframe'de "I'm done" komutunun tüm tarayıcılar için daha güvenilir olduğunu ekledim. – Mic

+0

Bu durumda iframe içeriğinin (kaynaklar, DOM, vb.) Yüklenmesi ya da bitmemesi önemli değildir, sadece "kullanıcının yeni bir sayfayı görüntülemeye başladığı" önemlidir. Büyük nokta olsa da. –