web-dev-qa-db-ja.com

iframeから親ウィンドウを更新するにはどうすればよいですか?

親ページとそのページ内にiframeがあります。親のリンクは、iframeに読み込まれるページを制御します。私がやりたいのは、iframeが読み込まれたときに親ページを更新することです。私はこれをiframeに持っています:

RefreshParent(){
    parent.location.reload();
}

<body onload="RefreshParent();">

ただし、上記のコードは、親ページ全体とその中のiframeを更新します。これにより、親ページが再読み込みされ、無限ループに入ります。

10
jkm

Iframeをリロードせずに親ページを更新することはできません。

あなたができることは [〜#〜] ajax [〜#〜] を使用して親のコンテンツを更新することですが、それはかなりの量の作業になる可能性があります(jQueryまたはPrototypeフレームワークを使用するとこれが簡単になります)。

9
Greg

Ajaxテクニックも使用する必要はありません。親ページのiframeに含まれているページから、親ページでjavascript関数を呼び出すだけです。このようにして、親ページでアクションを簡単に実行できます。 iframeに影響を与えずにiframeのページから親ページを部分的に更新する方法 はその方法を示しています。

お役に立てれば。

2
sangam

同じドメインにいる限り、次のようなものを使用できます。

window.parent.location = window.parent.location + '?parent-updated=true'
1
sidarcy

ページの別の部分を更新しながらiframeを保持するには、iframeを「通常の」フレームにする必要があります。 iframeは技術的には親の一部であるため(結局のところ、インラインフレームです)、親を更新するとiframeコンテンツも再読み込みされます。

0
JayTee

レイアウトによって異なりますが、他の投稿で確認されているように、ページの一部であるiframe自体を更新せずに親フレームを更新することはできません。

Ajaxを使用せず、レイアウトが許可されている場合、1つの解決策は、親フレームのコンテンツをiframe自体に配置することです。次に、iframeが読み込まれたときに、「親コンテンツ」を含むiframeを更新するように親ページに指示できます。 '親' iframeがフチなしでスクロールがない場合、これはすべてユーザーに対して透過的です。

この手法を親コンテンツの2つのiframeまでプッシュすることができ、ajaxよりもすばやく簡単に実装できます。さらに、弾丸を噛んでajaxソリューションを実装することもできます。

0
Cruachan