2011-04-04 3 views
0

必要に応じてページに追加、削除されたiframeを使用しています。 iframeには、親ドキュメントから呼び出されるjavascriptコードが含まれています。iFrameは関数の実行時に名前を失います(DOMからの削除/追加)

は、私はそれはもはやのようなものを使用してアドレス可能で、その結果、IFRAMEは、「その名を失う」ことを発見しました:

window.frames['iframename'].function() 
関数が初めて呼び出された後、この問題が発生

、およびiframeが削除され、再度追加されました。 iframeを何度も追加したり削除したりしても、関数を少なくとも1回呼び出すことができます。iframeを削除しないと何度も呼び出すことができますが、関数が呼び出されるとすぐにiframeが呼び出されますその関数が呼び出されようとすると、その関数が定義されていないというエラーが発生します。

私は例えば、それのインデックスではiframeをアドレスすることによってこの問題を回避することができました:

window.frames[2].function() 

しかし、私は「ハードコード」のこの種のが好きではありません。

なぜこのようなことが起こりますか、iframeのインデックスを使用せずにiframe内の関数を呼び出す最良の方法は何ですか?

答えて

0

iframeをページから削除するのではなく、隠すだけで、この問題を解決できます。

はあなたのiframeを削除するたびにちょうど

document.getElementById('iframename').style.display = 'none';

を設定し、それを追加するたびに、あなたが好きなように行動する

document.getElementById('iframename').style.display = 'block';

これを使用することができます。

あなたはjavascriptの変数にあなたのiframeを追加し、その変数を使用して関数を呼び出すことができます。

var myFrame = window.frames['iframename']; 
myFrame .function() 

はちょうどあなたのiframeを配置した後、このJavaScriptコードを追加することを検討してください。

関連する問題