2011-06-23 5 views
6

親ページに読み込んだiframeがあります。 iframeには一連のフォームが含まれています。iframeコンテンツをリロードするたびに(つまり、フォームがiframeコンテンツで送信された後に)、親ページでアクションを起こしたいと考えています。現在のコードは親ページにあり、IEを除くすべての大手プレーヤーで動作します(私はInternet Explorer 7の場合のみ& 8に関係しています)。Javascriptを使用したIE7/8のiframe onload

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

これがIEで有効にならないのはなぜですか?

+0

iframeのドキュメントを参照してみてください:var iframe = document.getElementById( 'theiframe')。 (私は推測しているので答えはありません:) – Cfreak

答えて

4

置き換えます

iframe.onload = refresh 

をして:

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


混乱をクリアするには:

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

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

'load'と' onload'には違いがありますか? –

+0

IEはイベントonloadを呼び出し、他のブラウザはそれをロードと呼びます。 – Joe

+0

終了の前に 'else if(iframe.addEventListener)...'句を追加しました。よかった! –

1

あなたが完了したらparent.refresh()を呼び出すことにより、iframeからそれを呼び出すことができます提出してください。

+0

私は最終的に親とiframeの両方を制御できますが、iframeの変更は非常に困難です。 –

+1

okですが、 'onload'イベントが発生し、' iframe'ですべてのジョブが終了しないことがあります。私はiframeの "I'm done"コマンドをすべてのブラウザでより信頼できるものにすることを追加しました。 – Mic

+0

この場合、iframeのコンテンツ(リソース、DOMなど)が読み込まれていても読み込まれていなくても、「ユーザーが新しいページを表示し始めました」ということは問題ではありません。しかし、大きなポイント。 –

関連する問題