iframeの親から子、子から親の操作をする

親ページ内からiframe内を操作したり、逆にiframe内から親ページを操作する方法をメモ。

要素の操作をする

必要箇所だけ抜粋していますので、詳細はデモページでご確認ください。

HTML(親ページ)

<div id="oya">
<input type="text" /><button>実行</button>
<div id="oya-result">結果がここに反映されます。</div>
</div>
<iframe id="child-frame" src="child.html"></iframe>

HTML(子ページ)

<div id="ko">
<p>子</p>
<input type="text" id="" /><button>実行</button>
<div id="ko-result">結果がここに反映されます。</div>
</div>

JavaScript(親ページ)

$(function() {
	$(document).on('click', '#oya button', function() {
		$('#child-frame').contents().find('#ko-result').text($('#oya input').val());
	});
});

JavaScript(子ページ)

$(function() {
	$(document).on('click', '#ko button', function() {
		$('#oya-result' ,parent.document).text($('#ko input').val());
	});
});

親ページでは、ボタンがクリックされた時にiframe内のテキストを書き換える処理をしています。
JavaScript3行目の#child-frameでiframeを指定して、contents()でiframe内の全要素を取得、find()でiframe内の要素を探して操作しています。

子ページでは逆に、parent.documentで親ページを指定して、その中の#oya-resultという要素に対して操作をしています。

要素の操作をするデモページ
 

関数を実行する

必要箇所だけ抜粋していますので、詳細はデモページでご確認ください。

HTML(親ページ)

<div id="oya">
<button>iframe内の関数実行</button>
</div>
<iframe id="child-frame" src="child2.html"></iframe>

HTML(子ページ)

<div id="ko">
<button>親ページの関数実行</button>
</div>

JavaScript(親ページ)

function oyaFunc() {
	alert('親ページの関数が実行されました。');
}

$(function() {
	$(document).on('click', '#oya button', function() {
		document.getElementById('child-frame').contentWindow.koFunc();
	});
});

JavaScript(子ページ)

function koFunc() {
	alert('iframe内の関数が実行されました。');
}

$(function() {
	$(document).on('click', '#ko button', function() {
		window.parent.oyaFunc();
	});
});

関数を実行するデモページ
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年12月
1234567
891011121314
15161718192021
22232425262728
293031