就像标题所说,我试图设置一个隐藏的iframes高度来匹配它的内容,但我一直得到非常不正确的高度。隐藏iframe的内容高度
我正在预加载一个新的(隐藏的)带有内容的iframe,我需要在iframe设置为由用户显示之前设置高度。
我一直在这样做的框架,可以很容易地看到很长一段时间,但现在,当它们被加载时,框架被隐藏起来。我已经浏览过SO的每一个角落,并尝试过很多基本功能的变体,但没有运气。
我试着离开iframe可见,设置高度然后隐藏它,但帧的快速闪光是没有吸引力。有没有一种方法,我只是不知道从隐藏的iframe中获取ACTUAL内容高度?
打开jquery或纯js的想法。以下是我一直在使用的两个最常见的示例。
对此的任何建议将不胜感激。先谢谢你。
// example 1
function resizeIframe(obj){
obj.style.height = 0;
obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
}
portalDiv.append('<iframe src="" scrolling="no" style="display:none;"></iframe>');
$('iframe').last().attr('src', '/content.php').load(function() {
resizeIframe(this);
// should return 363px
// returns 1531px :(
});
// example 2
portalDiv.append('<iframe src="" scrolling="no" style="display:none;"></iframe>');
$('iframe').last().attr('src', '/content.php').load(function() {
var contentHeight = $(this).contents().find(".container").height();
$(this).height(contentHeight+"px")
// should return 363px
// returns 1531px :(
});
尝试使用'style =“visibility:hidden;”'而不是'display:none;''。这将呈现iframe,就像它有布局一样,所以你的高度/宽度计算应该是准确的。 – murdock
谢谢,我会给它一个镜头。可见度是否与ie8一起工作? – xxstevenxo
是的,它已经成为CSS规范多年的一部分。它甚至适用于IE6 :) – murdock