No.250


【jQuery】iframeの親と子の間で情報やりとり

モーダルでのiframe使用時などに便利

 最近のUIはモーダルを多用するものが多い気がする。
 簡単な処理なら良いんだけど、親ウィンドウとの間で相互に情報をやりとりしたりするようなケースになると、必然的にJavascriptの出番となる。

 原理は知ってしまえば簡単で、ほとんどコピペで使うことが出来る。

 というわけでコピペ用の元をメモ。


前提

 下記のような構造のHTMLを想定。

親(hoge.html)

<div id="hoge">
  <input type="text" id="foo">
  <iframe src="fuga.html">
</div>

子(fuga.html)

<div id="fuga">
  <input type="text" id="var">
</div>

親から子の要素を操作

 原理は「子の要素(#fuga)の中から必要な要素(#var)を検索」して特定している。

 親への入力内容を子に伝えるケースは下記のようになる。

$(function() {
  $(document).on('input', '#foo', function() {
    let value = $('foo').val();
    $('#fuga').contents().find('#var').val(value);
  });
});

子から親の要素を操作

 原理は「親の要素(#hoge & parent.document)の中から必要な要素(#foo)を検索」して特定している。

 子への入力内容を親に伝えるケースは下記のようになる。

$(function() {
  $(document).on('input', '#var', function() {
    let value = $('var').val();
    $('#hoge' ,parent.document).find('#foo').val(value);
  });
});