2011-07-01 35 views
0

ここで間違っていることを理解できません。親ウィンドウからiframe内の関数を呼び出す

私はサーバ側のないウェブサイトを構築しています メインページにiframeがあり、ボタンをクリックするとiframeのsrcが変更され、その中の関数が渡されたパラメータで呼び出されるようにします。

何らかの理由で関数が呼び出されていません。ここ

は私のコードです:

のiframe:

<iframe id="main_area_frame" name="main_area_frame" src="" frameborder="0" width="100%"  height="100%"></iframe> 

onclickの機能:

function onSubMenuClick(images) 
{ 
    //Set Images Frame 
    main_area = document.getElementById("main_area_frame"); 
    main_area.src = "ImagesFrame.html"; 
    main_area.contentWindow.initializeImages(images); 
} 

機能のiframe(ImagesFrame.html)中:

function initializeImages(imagesStr) 
{ 
    alert("initializeImages"); 
    ... 
} 

奇妙なものmain_area.contentWindow.initializeImages(images)の直前に警告を追加すると、

が表示されます。 関数が何とか正常に呼び出されます。

iframeのsrcを最初から設定して、main_area.src = "ImagesFrame.html"という行をスキップすると、 - 関数は再び呼び出されます。

それが原因であるが、私はインラインフレームをレンダリングすることができるようにするために、

main_area.src = "ImagesFrame.html"; 

main_area.contentWindow.initializeImages(images); 

間の遅延(スリープ)を入れてみてくださいならば(私は

答えて

0

わかりません同じフレームでレンダリングされているかブラウザが新しいフレームを起動しているかはわかりません)。

ちょうど私の2セントです。

+4

あなたはインラインフレームを非同期負荷があり、それが問題の原因だと正しい、など一般的にアクセスできるようになります。しかし、遅れではなく、iframeでonloadイベントをリスンする必要があり、そのイベントが発生したときにiframeの内容を操作することは安全です。 – jfriend00

+0

もちろん、jfriend00メソッドは私よりも堅牢です。私のことは、原因の迅速なテストとして機能します。プロダクションでは、jfriend00プロポーザルを使用してください。 – SJuan76

+0

ありがとう!よく働く! – koela1

0

オンロード処理中に、iframeの子から関数を公開して成功しました。例えば、(あなたのFUNCNAME代用):子はiframe、編集bodyタグで

(または同等のJavaScriptを使用する)

<body onload='top.funcName = funcName'> 

親ページでは、Javascriptを編集します。今 FUNCNAME
value = top.funcName()

関連する問題