跨域iframe调整大小为firefox 3.6.10

时间:2015-04-17 18:00:45

标签: javascript iframe

有没有办法根据内容调整跨域iframe的大小,这可以在Firefox 3.6.10中使用? 我认为postMessage命令有效,但我找到的解决方案适用于Firefox 12,但不适用于Firefox 3.6.10。或许这不是问题。

正如我在另一个问题中写的那样,youtube似乎只是将iframe的内容嵌入到评论部分的页面中,这就是动态调整大小的方式。这基本上解决了每个iframe问题,因为HTML将嵌入到网站的本地HTML中,并且没有相同的原始策略会阻止任何内容。当我问起这个问题时,我没有得到答案。

所以提前谢谢你,或者如果你不喜欢别人这么说的话,如果有人帮忙,我将不胜感激。

我也可以控制框架内的内容!

(我需要这个脚本,让youtube看起来像2012年左右,所以更多的人也会感激不尽。)

2 个答案:

答案 0 :(得分:0)

您可以尝试在GitHub上查看此内容。

https://github.com/davidjbradshaw/iframe-resizer

答案 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每次向其发送消息时都会执行该函数。它会导致缓慢