趣旨
iframe(親)に異なるドメインのページ(子)を読み込んで、親フレームにスクロールが出ないよう、iframeの高さを子ページの高さに自動調節する方法
普通にやると、
「Uncaught SecurityError: Blocked a frame with origin "http://hoge.com" from accessing a frame with origin "http://fuga.com".
Protocols, domains, and ports must match. 」
などと怒られてしまいますのでこちらを参考に
http://i556tips.tumblr.com/post/15710917018/%E3%82%AF%E3%83%AD%E3%82%B9%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%A7iframe%E3%81%AE%E9%AB%98%E3%81%95%E3%82%92%E8%87%AA%E5%8B%95%E8%AA%BF%E7%AF%80%E3%81%99%E3%82%8Bjavascript
コード
hoge.com(親)
<html> <head> <title>親</title> <script src="js/jquery.js"></script> <script> window.addEventListener('message', function(e) { var iframe = $("#fugapage"); var eventName = e.data[0]; var data = e.data[1]; switch(eventName) { case 'setHeight': iframe.height(data); break; } }, false); </script> </head> <body> <iframe id="fugapage" src="http://fuga.com/" width="960" height="auto" style="display:block; margin:0 auto; border:none;"></frame> </body> </html>
fuga.com(子)
<html> <head> <title>子</title> <script type="text/javascript"> window.onload = function() { var height = document.getElementsByTagName("html")[0].scrollHeight; window.parent.postMessage(["setHeight", height], "*"); } </script> </head> <body> ・・・ </body> </html>
ありがとうHTML5、そして、postMessage!
コメント
コメントを投稿