Javascript iframe在内容小于默认大小(300x150)时调整大小
在我当前的场景中,我有一个加载iframe的页面。iframe的内容无法预先确定,因此我需要使用javascript动态调整大小。我用于完成此任务的代码如下:Javascript iframe在内容小于默认大小(300x150)时调整大小,javascript,html,css,iframe,Javascript,Html,Css,Iframe,在我当前的场景中,我有一个加载iframe的页面。iframe的内容无法预先确定,因此我需要使用javascript动态调整大小。我用于完成此任务的代码如下: newIframe.onload = function() { var cw = newIframe.contentWindow; var doc = cw.document; var body = doc.body, html = doc.documentElement; var hei
newIframe.onload = function() {
var cw = newIframe.contentWindow;
var doc = cw.document;
var body = doc.body,
html = doc.documentElement;
var height = Math.max(body.scrollHeight, body.offsetHeight,
html.clientHeight, html.scrollHeight, html.offsetHeight);
var width = Math.max(body.scrollWidth, body.offsetWidth,
html.clientWidth, html.scrollWidth, html.offsetWidth);
newIframe.style.width = width + "px";
newIframe.style.height = height + "px";
}
除了iframe的内容小于width=300或height=150外,所有内容都按预期工作。在这种情况下(例如,iframe仅包含一幅w:160和h:600的图像),计算的宽度是错误的。通过将iframe的初始宽度和高度设置为
0
,问题消失了,因为这些值将用作默认值。iframe的初始值是什么?(在代码或css中)。。。请添加有问题的html/css。我还猜测iframe的初始值比您引用的图像宽,并且如果内容缩小,则其宽度不会缩小,因此无法在主体上进行测量,因为当内容不太宽时,它会反映iframe的宽度。如果主体具有与iframe相同的init值,则需要在主体的子元素上进行测量。@LGSon由于内容是动态的,因此我无法为iframe设置初始值。它可以是160像素,也可以是300像素。。。你可以在这里尝试,我明白了,但是在你添加任何内容之前,iframe的宽度值是多少。。。如果内容小于相同的iframe宽度,则该值是计算iframe内容体时得到的值,这也是为什么当内容较小时计算值不起作用的原因。我认为这会解决问题,请将iframe初始值从width:auto;高度:自动代码>至<代码>宽度:0;身高:0代码>