これは非常に複雑に聞こえます (読み: 問題あり)。
あなたが求めているのは、以前から問題であり、元の HTTP プロトコルにまでさかのぼります。
短い答えはノーです。これは実際には不可能です。親を更新すると、子へのすべての参照が失われます。実際には、それは非常に現実的です....親は「リフレッシュ」されます....子供たちは、親が残したすべてのリソースを取得します...申し訳ありませんが、トピックから外れています。Web はステートレスであるため、ページが更新、再読み込み、閉じられる、開かれる、または他の動詞が関連付けられると、そのページは新しいドキュメントとして扱われます。
これは chrome/FireFox では正常に機能しますが、IE では機能しません。
次のようなものは機能しますが、子/親の間の関係を再接続するには、子から行う必要があります。以下のスクリプト/マークアップで例を示します。だから私はそれを使用しませんが、例としてここに示します。
手順:
- 子を開く
- 子に移動
- 親をリフレッシュ
- **親 -> 子関係が失われます。
- **子 -> 親の関係はまだ存在します。
- 親をリンク
- 親ページへ
- 関係をチェック
- **親がnullではないことがわかります
- 親にとどまる
- 子をリフレッシュ
HTMLPage.htm:
<input type="button" onclick="openChild();" value="Open Child" />
<input type="button" onclick="refreshParent();" value="Refresh Parent" />
<input type="button" onclick="linkParent();" value="Link Parent" />
<input type="button" onclick="checkRelationship();" value="Check Relationship" />
<input type="button" onclick="refreshChild();" value="Refresh Child" />
<script type="text/javascript" language="javascript">
var child;
function openChild() {
child = window.open("HTMLPage.htm");
}
function refreshParent() {
alert("refreshing parent");
window.opener.location.href = window.opener.location.href;
}
function linkParent() {
window.opener.child = window;
checkRelationship();
}
function checkRelationship() {
alert("Parent: " + window.opener + ". Children:" + child);
}
function refreshChild() {
child.location.href = child.location.href;
}
</script>
それでは、私の次の質問は次のとおりです。
これで何を達成しようとしていますか?状況が本当に必要な場合は、モーダルウィンドウ/ポップアップウィンドウを使用することにすべて賛成ですが、それらの配列が必要ですか?
親ページは更新する必要がありますか? 親ページにiframeを貼り付けて更新していただけますか(メインページを更新する必要がないIE.ファイルのアップロードなど)。
私は Apple ファン ボーイとはほど遠いですが、このリンクは、スクリプトで IFrame を使用することについての良い洞察を与えてくれます: http://developer.apple.com/internet/webcontent/iframe.html
これが役立つことを願っています。