iframe自动高度在Firefox上无法正常工作

时间:2016-03-03 12:58:09

标签: javascript jquery iframe

我正在寻找一种自动高度调整的解决方案,具体取决于iframe内部的内容,这看起来像是在使用chrome。

但出于某种原因,如果我等待网站完全加载,然后点击' '主页上的标签,iframe内容不可见,因为高度设置为' 4px'。

同样,如果您在加载时点击标签,或者在加载之前点击它,那么它的效果非常好。

我猜它与源有关。 我遇到问题的网站位于:http://xefrontier.com/

谁能告诉我为什么会出现这种现象?

这是来源:

  function resizeIframe(obj){
 obj.style.height = 0;
 obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
  }

 function getDocHeight(doc) {
doc = doc || document;
// stackoverflow.com/questions/1145850/
var body = doc.body, html = doc.documentElement;
var height = Math.max( body.scrollHeight, body.offsetHeight, 
    html.clientHeight, html.scrollHeight, html.offsetHeight );
return height;
}

function setIframeHeight(id) {
var iframe_board = document.getElementById(id);
var doc = iframe_board.contentDocument? iframe_board.contentDocument: 
    iframe_board.contentWindow.document;
iframe_board.style.visibility = 'hidden';
iframe_board.style.height = "10px"; // reset to minimal height ...
// IE opt. for bing/msn needs a bit added or scrollbar appears
iframe_board.style.height = getDocHeight( doc ) + 4 + "px";
iframe_board.style.visibility = 'visible';
}

document.getElementById('iframe_board').onload = function() { // Adjust the Id accordingly
setIframeHeight(this.id);
}

2 个答案:

答案 0 :(得分:1)

OP问题的解决方案如下:

  • 与iframe交互的功能适用于Chrome,但不适用于Firefox。
    • 停止如果Firefox出现问题,Chrome可以与iframe交互,那么请考虑是否在PC,Mac或两者兼容。
    • 有可能成为Mac及其与Firefox的精彩关系(注意:在键盘上不能很好地表达讽刺)。
  • 如果问题与运行Firefox的Mac隔离,那么您可以执行以下操作以88.4%的时间修复它。

    1. 找到在iframe上侦听加载事件的所有事件处理程序:

      • 离。 <iframe src="domain.com" onload="eventHandler()"></iframe>

        REMOVE ================= ^ ------- === THIS === ------ ^。

    2. 禁用/删除它们。

    3. </script>块的最后添加:

      离。 window.onload = eventHandler;

    4. 注意=================== ^ = ^ -DO在功能结束时不添加()

Firefox Mac有许多独特的问题,有些是设计上的。其中一个错误是它无法在加载后确认iframe的存在。 Firefox Mac将在加载其他所有内容后处理iframe。这只是我从经验中观察到的。

答案 1 :(得分:0)

使用以下代码调整iframe高度

 <script language="javascript" type="text/javascript">
 function resizeIframe(obj) {
  obj.style.height = (obj.contentWindow.document.body.scrollHeight) + 'px';
}
</script>

和iframe代码

  <iframe src="somepage.php" width="100%" frameborder="0" scrolling="no" onload="resizeIframe(this)"></iframe>