我有一个有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内容。
当上面的脚本被标记为答案时,我正在做什么错误?...帮助
答案 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) %>">