Javascript iframe在内容小于默认大小(300x150)时调整大小

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

在我当前的场景中,我有一个加载iframe的页面。iframe的内容无法预先确定,因此我需要使用javascript动态调整大小。我用于完成此任务的代码如下:

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