クロスドメインのiframeで子フレームから親フレームにheightの値を渡す
2014/07/09
やりたかった事は、
・iframeで子フレームから親フレームにheightの値を渡して、
親フレームの枠を自動で調整したい
・クロスドメインな状況
・子フレーム側の操作によってサイズが変わる
というもの。
■子フレーム側
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html> <head> <script type="text/javascript"> window.addEventListener("load", postSize, false); function postSize(e){ var target = parent.postMessage ? parent : (parent.document.postMessage ? parent.document : undefined); if (typeof target != "undefined" && document.body.scrollHeight) { target.postMessage(document.getElementById("foo").scrollHeight, "*"); } } </script> </head> <body> <div id="foo" style="height: 1500px; background:red;"></div> </body> </html>
■親フレーム側
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <script type="text/javascript"> window.addEventListener("message", receiveSize, false); function receiveSize(e) { if (e.origin === "http://aaa.com") { //子フレームのドメイン入れる console.log(e.data); //ここにheightの値入る } } </script> </head> <body> <iframe id="bar" src="http://aaa.com/iframe.html" scrolling="no" > </iframe> </body> </html>
■参考サイト
http://d.hatena.ne.jp/bannyan/20090820/1250789189
http://sugilog.hatenablog.com/entry/20111130/1322653985
■その他
子フレーム側はonClickとか好きに呼び出せば良し。
postMessageって何、となったので調べると
「安全にクロスドメイン通信を可能にするためのメソッド」らしい。
https://developer.mozilla.org/ja/docs/DOM/window.postMessage
関連記事
-
-
郵便番号を入力すると住所を自動で入力してくれる「ajaxzip3」ライブラリの利用方法
お問い合わせフォームのようなページで郵便番号及び住所欄がある場合、ユーザーが郵便 ...
-
-
セレクトメニュー(プルダウン)をdisplay:none;指定してもiPhoneのみ非表示にならない問題の対応方法
セレクトメニュー(プルダウン)に対してdisplay:none;指定したりjQu ...
-
-
Leafletにて地図を全画面(フルスクリーン)表示機能を追加する方法
Leafletにて表示されている地図に全画面表示ボタンが設置されているサイトがあ ...
-
-
JavaScript / jQueryでブラウザのウィンドウがアクティブかどうかを判別する方法
ある動画サイトを閲覧していた際にウィンドウが非アクティブになると視聴中の動画が止 ...
-
-
JavaScriptで後から追加した要素にイベントを割り当てる方法と挙動の違いについて
jQueryで後から追加した要素に対してイベントを割り当てる場合、いつもと異なる ...