2012-05-25 17 views
18

iframeからparrentページにアクセスする方法はありますか? frame1.htmlでiframeから親ページにアクセスして親ページを変更する(jqueryを使用)

<body> 
    <iframe src="frame1.html" name="frame1" height="100%"></iframe> 
    <div id="test1"></div> 
</body> 

<a href=..>と私は<a href..>がクリックされたとき、<div id="test1"></div>にテキスト "<h1>clicked</h1>" を追加します。

ありがとうございました。

+0

多くのセキュリティ上の理由から、これは不可能です。 –

+1

@ChristianVargaは完全には真ではありません:同じドメインに存在する要素間で許可されています。 – Christoph

+1

素晴らしいです、私は訂正します。 –

答えて

20

あなたの子ページ(frame1.html)は親ページと同じドメインにある場合、あなたは子ウィンドウに以下のようなコードを書くことができます。

$('#test1', parent.document).html('<h1>clicked</h1>'); 

2番目のパラメータがcontextで提供第1のパラメータと一致する要素を検索する。ドキュメントはここにある:http://api.jquery.com/jQuery/#jQuery-selector-context

jQuery(selector [, context ]) 

だから、あなたのコード(frame1.html)は次のように行くことができる:

<a href="..." 
    onclick="$('#test1', parent.document).html('<h1>clicked</h1>');">click me</a> 

この情報がお役に立てば幸いです。

7

重要な注意:親とiframeの両方が同じドメインからであれば中とのiframe外へのアクセスは、他にあなたが原因同一生成元ポリシーにはアクセスできません、のみ可能です。

両方の部分にはそれぞれ独自の文書があります。 IFRAMEから親オブジェクトにアクセスすると、それが次のいずれかです

parent.document 

とし、親から簡単です:(!のサポートに注意)

window.frames['iframeName'] 

(window.frames.length /*gives you the number of iframes in your document*/) 

またはIDでそれを参照し、次の操作を行い

var iframe = document.getElementById('iframe'); 
var doc = iframe.contentDocument? iframe.contentDocument:iframe.contentWindow.document; 
2

以下のコードは正常に動作する必要があります:

$(parent.document).find("#selector"); 

セレクタは親ドキュメントのもので、何らかのアクションを実行します。例:

$(parent.document).find("#selector").remove(); 
関連する問題