趣旨
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!

コメント
コメントを投稿