2011-12-13 8 views
0

子ウィンドウでは、オープナーウィンドウが別のドメインに移動する(または閉じられる)まで待つ必要があります。私は現在、イベントを使用していませんが、オープナーウィンドウがヌルになるか、(クロスドメイン制限のために)その場所にアクセスできなくなるまで、オープナーウィンドウを確認する間隔を使用しています。代わりにオープナーウィンドウでイベントを使用しようとします。オープナーウィンドウのロードイベントを購読できますか?

これは私が子ウィンドウを開く方法です:

window.opener.addEventListener('load', waiting, false); 
function waiting() { 
    console.log("Waiting..."); 
} 

しかし、イベントハンドラが呼び出されません。

window.open("wait.html", "_popup", ""); 

は、これは私がwait.htmlでイベントをサブスクライブしようとしている方法です。私はChromeで作業しているので、addEventListenerはここで正しく動作するはずですか?

var AWindow; 
function openChild() 
{ 
    AWindow = window.open("TestCallBack.html"); 
}; 

とあなたの親ウィンドウのイベントハンドラで:

var myChildSays = AWindow.childCallBack('from parent'); 

と子ウィンドウでの機能:それをする

答えて

2

ドキュメントにすべてのjavascriptとイベントがロードされると、これはセキュリティ上の理由によるものです。これを避けてはいけません。

同様の動作を達成する1つの方法は、アンロードイベントを購読することです。

+0

最初のアンロードが行われた後、アンロードハンドラもクリアされます。 –

+0

はい、ユーザーがコントロールしているページを残すと、ユーザーを制御できなくなります。 –

1

一つの方法は、子供で関数を呼び出すことであろう

function childCallBack(passstuff) 
{ 
    return "CHILD GOT:(" + passstuff + ")"; 
}; 
+0

技術的には、子ウィンドウから親ウィンドウイベントを購読していません。それは不可能ですか? –

関連する問題