我正在寻找一种自动高度调整的解决方案,具体取决于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);
}
答案 0 :(得分:1)
OP问题的解决方案如下:
如果问题与运行Firefox的Mac隔离,那么您可以执行以下操作以88.4%的时间修复它。
找到在iframe上侦听加载事件的所有事件处理程序:
离。 <iframe src="domain.com" onload="eventHandler()"></iframe>
REMOVE ================= ^ ------- === THIS === ------ ^。
禁用/删除它们。
在</script>
块的最后添加:
离。 window.onload = eventHandler;
注意=================== ^ = ^ -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>