自动Iframe高度

时间:2010-07-30 09:55:53

标签: javascript iframe

我有一个有iframe的asp页面。我需要将自动高度设置为iframe。我在iframe sizing - cross browser issue找到了一篇文章 但它无法解决我的问题。 我的iframe是

<iframe id="content" src=http://www.bc.com.au/news_manager/templates/?a=<%=request.QueryString("a")%>&z=<%=request.QueryString("z")%> width="908px" height="1000px" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" style="margin-left:auto; margin-right:auto;" ></iframe>

和asp页面上的代码是:

<script type="text/javascript">
   window.onresize=resizeContentFrame;
            resizeContentFrame();

function resizeContentFrame(){
    setFrameHeight(documenent.getElementById('content'));
}

function setFrameHeight(f){
    if(isDefined(f)){
    alert('executing');
        var h=document.documentElement.scrollHeight;
        h-=(HEADER_HEIGHT+CONTENT_PADDING+5);
        f.style.height=h+'px';
    }
}
</script>

如果我在iframe中没有给出固定的高度,它只会剪切iframe内容。

当上面的脚本被标记为答案时,我正在做什么错误?

...帮助

2 个答案:

答案 0 :(得分:0)

你不能只使用html属性“height”并将其设置为例如“90%”吗?或者布局更复杂?在这种情况下,您可以使用css-attribute并使用jQuery动态更改它。

答案 1 :(得分:0)

    var h=document.documentElement.scrollHeight;

这是文档的高度,而不是窗口的高度。您可能希望clientHeight不是scrollHeight。另外,请确保使用标准模式<!DOCTYPE,否则您将获得Quirks模式,您必须在其中查看document.body。 (以及许多其他不良特性。)

在IE6-7以外的浏览器中,您可以在没有脚本的情况下执行此操作。请参阅this question

?a=<%=request.QueryString("a")%>

HTML注射。像?a=><script>alert(document.cookie)</script>这样的查询可以将脚本内容注入您的页面,从而为您提供潜在的XSS安全漏洞。在任何情况下,您还应该对要插入URL的任何查询参数进行URL编码:

url= "http://www.bc.com.au/news_manager/templates/?a="&Server.UrlEncode(Request.QueryString("a"))&"&z="&Server.UrlEncode(Request.QueryString("z"))

<iframe id="content" src="<%= Server.HtmlEncode(url) %>">