2011-03-22 13 views
1

複数のウィンドウを処理するためのJavaScriptがいくつか作成されています。次の階層を適用する方法が必要です。メインウィンドウは、他のウィンドウが開いている場所から開かれた。すなわち、メインウィンドウがwindow.open()を使用して子を開き、子がwindow.open()を使用してウィンドウを開くと、これらの2つの子ウィンドウはメインウィンドウの兄弟と子である必要があります。これは問題を引き起こしています。 window.open()を呼び出す前に親ウィンドウを参照する方法はありますか?親が新しいウィンドウの親として設定されているので、javascript関数が呼び出されたウィンドウではなく?javascriptで特定のウィンドウ階層を維持する

私は成功せず、これを試してみましたが、それは近いかもしれない:

if (window.opener && !window.opener.closed) { 
    window.opener.functionThatEventuallyOpensAWindow(); 
} else { 
    functionThatEventuallyOpensAWindow(); 
} 

、誰もがそれをいただければ幸いです任意のアイデアを持っている場合。このコードセグメントはwindow.open()を直接使用することはできませんが、最終的にはwindow.open()で終わる他の関数を呼び出さなければならないことに注意してください。

+0

あなたのアプローチにはどんな問題がありますか?エラーはありますか? – Thorben

+0

私は完全に何が起こるかはわかりません - これらの行の上にデバッガを置いてステップインすると、2行目でF11(関数呼び出しにステップインします)を押しても何も起こりません。関数呼び出しを完全にスキップし、ウィンドウは開かれません。 – jbabey

答えて

0

修正が見つかりました。私は実際のwindow.openに関数呼び出しを続け、私が子供であったかどうかを検出するためにロジックに追加する必要がありました。もしそうでしたらwindow.opener.open()を呼び出してください。コールスタックの早い段階でコンテキストを変更することができなかった理由はわかりませんが、それは動作します:)

関連する問題