1

我们有两个域,domain.com并且sub.domain.com

在 domain.com 上

<html> 
<head> 
    <title>Main</title> 
</head> 
<body>
    <h1>This is the parent</h2>
    <iframe src="http://sub.domain.com/results.aspx" 
            width="100%" height="1px" id="iframe1">
    </iframe>
</body>
</html>

问题:我们如何将 iframe 高度从1px它的实际高度调整(当 iframe 加载时)?当用户在 iframe 中播放时,它的高度可能会发生变化,所以我怀疑可能需要将它与某些事件挂钩。

现在我完全意识到在浏览器中阻止了跨脚本,甚至子域(或不同的端口号)也构成了“跨域”。但是,我们控制这两个域,所以我正在为此寻找一个好的解决方案。我们查看了window.postMessage,它似乎是专门为此设计的,但无法使其工作。

4

2 回答 2

2

您的案例很简单,因为它是跨脚本子域(而不是跨脚本不同域)。只需document.domain = "domain.com"在您的页面和 iframe 中分配。有关更多信息,请查看: 跨子域 iframe 和 JavaScript以及 如何在框架之间进行通信?

于 2013-06-29T02:20:20.793 回答
1

您正在寻找的是 iframe 消息传递:

https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage

在父页面中:

var iframe = document.getElementById('myIframe');

function resizeIframe(event){
  if (event.origin !== "http://example.org"){
    // We trust this message
    iframe.setAttribute("style", "width:" + event.data + "px;");
  }
}

window.addEventListener('message', resizeIframe, false);

在子页面中:

function postParent(){
  window.postMessage($(body).height(), 'http://parentdomain.org');
}

$(window).on('load', postParent);
于 2013-06-29T02:43:09.323 回答