如何在iframe调整大小时重置父窗口滚动条

时间:2014-10-28 21:55:18

标签: javascript iframe

我使用以下脚本在iframe内容发生变化时调整其大小:

    <script language="JavaScript">
<!--
function autoResize(id){
    var newheight;
    var newwidth;

    if(document.getElementById){
        newheight=document.getElementById(id).contentWindow.document .body.scrollHeight;
        newwidth=document.getElementById(id).contentWindow.document .body.scrollWidth;
    }

    document.getElementById(id).height= (newheight) + "px";
    document.getElementById(id).width= (newwidth) + "px";
}
//-->
</script>

iframe:

    <iframe src="frontpage.html" frameborder="0" width="1000px" height="2000px" class="iframe" name="iframe_a" scrolling="no" id="iframe_a" 

onLoad="autoResize('iframe_a');window.parent.parent.scrollTo(0,0)">
</iframe>

当用户将iframe从短页面导航到长页面时,父窗口允许滚动 到页面底部。这很好。但是当从长页面导航到短页面时,滚动条(垂直和水平)保留在那里并允许用户向下滚动,即使 页面底部没有内容。我希望父窗口重置,以便在那里 当iframe已经改变为更小的尺寸并且适合窗口时,没有滚动或没有额外的滚动。

以下是页面:http://milmin.nixsyspaus.org/

1 个答案:

答案 0 :(得分:0)

您遇到的问题是,当您设置IFrame的高度时,它会影响body标签的高度。

如果您在内容中添加包装元素,请改为使用此元素的高度,它应代表内容的自然高度,而不是反映您在IFrame上设置的高度。

<body><div id='wrapper'>#content</div></body>

那么你的javascript就是

的document.getElementById(&#34; iframe_a&#34)。contentWindow.document.getElementById(&#34;包装&#34)。scrollHeight属性