有没有办法根据内容调整跨域iframe的大小,这可以在Firefox 3.6.10
中使用?
我认为postMessage命令有效,但我找到的解决方案适用于Firefox 12
,但不适用于Firefox 3.6.10
。或许这不是问题。
正如我在另一个问题中写的那样,youtube
似乎只是将iframe的内容嵌入到评论部分的页面中,这就是动态调整大小的方式。这基本上解决了每个iframe问题,因为HTML将嵌入到网站的本地HTML中,并且没有相同的原始策略会阻止任何内容。当我问起这个问题时,我没有得到答案。
所以提前谢谢你,或者如果你不喜欢别人这么说的话,如果有人帮忙,我将不胜感激。
我也可以控制框架内的内容!
(我需要这个脚本,让youtube看起来像2012年左右,所以更多的人也会感激不尽。)
答案 0 :(得分:0)
您可以尝试在GitHub上查看此内容。
答案 1 :(得分:0)
解决方案:
在包含iframe的页面中:
<script type="text/javascript">
function resizeCrossDomainIframe(id, other_domain) {
var iframe = document.getElementById(id);
window.addEventListener('message', function(event) {
if (event.origin !== other_domain) return;
if (isNaN(event.data)) return;
var height = parseInt(event.data) + 32;
iframe.height = height + "px";
}, false);
}
iframe代码中的
:
<iframe id="my_iframe" onload="resizeCrossDomainIframe('my_iframe', '**whatever domain your iframe content is on**');"></iframe>
对于连续调整大小,我把它放在包含iframe的页面中:
<script>
var interval = setInterval(function(){
resizeCrossDomainIframe('my_iframe', '**whatever domain your iframe content is on**');
}, 100);
</script>
iframe内容页面上的:
<script>
window.onload = function() {
window.parent.postMessage(document.body.scrollHeight, '**whatever domain your iframe containing page is on**');
}
</script>
这用于持续调整大小:
<script>
var interval2 = setInterval(function(){
window.parent.postMessage(document.body.scrollHeight, '**whatever domain your iframe containing page is on**');
}, 100);
</script>
更正:不需要第一个间隔脚本,因为eventlistener每次向其发送消息时都会执行该函数。它会导致缓慢