我认为这个选项不可用,但也许你知道这样做的一些策略! 我在http://www.mydomain.com上,并且我将iframe与另一个域的jquery放在一起:
<div id="myContent"></div>
$('#myContent').html('<iframe id="myFrame" src="www.anotherdomain.com"></iframe>');
好吧,我加载的页面,www.anotherdomain.com,它是我的,所以我可以添加任何类型的代码!
我想要做的是将myFrame
的高度设置为加载页面的实际大小(我无法知道,它可以在此期间发生变化)。
是否有一种方法可以将父DOM(mydomain.com)与插入页面的大小(anotherdomain.com)进行通信?
我不知道,我这么说,但为什么不问。
答案 0 :(得分:2)
您可以使用postMessage在不同域上的iframe之间发送消息(例如帧的高度):https://developer.mozilla.org/en/DOM/window.postMessage
答案 1 :(得分:1)
跨域通信非常有限,根据远程主机上的不可能,这是不可能的。 http://www.ibm.com/developerworks/library/wa-aj-jsonp1/您可以使用JSONP尝试从远程站点检索信息,但它非常有用,而不是初学者。
我发现对我有用的工作是我使用服务器端语言来包含远程文件。所以不是&lt; iframe&gt;
我做了一个PHP服务器端包括:
<?php include 'http://www.example.com/file.txt?foo=1&bar=2'; ?>
这当然只适用于使用PHP的情况。一旦我以这种方式包含它,我就能够操纵DOM元素。
答案 2 :(得分:1)
我找到的唯一解决方案是通过url传递iframe高度。你可以在这里找到我的测试:
http://jsfiddle.net/Grsmto/nBWrJ/2/ (已更新)
此解决方案适用于跨浏览器(chrome,ff,即所有版本,移动等)和跨域。
您必须能够访问iframe代码本身和iframe主机。 只需调用iframe中的publishHeight()函数,即可在需要时刷新iframe高度(即使内容发生变化)。
这应该在没有jquery的情况下工作(主要是在纯javascript中编写的......)。 唯一不方便的是,您将在网址中拥有高度,如:
http://www.yourdomain.com/index.html#1458px
但你应该轻松删除它或将其改为不那么丑陋的东西。
编辑:似乎Disqus和Twitter使用此库来执行此操作:http://easyxdm.net/wp/
编辑2:在您的页面上,您将代码放在第一个jsfiddle页面上。在你的iframe中你放了iframe的代码(红色div“myiframe”在右下角)。希望很清楚...... 但是检查下面的链接应该是一个更好更容易的解决方案。