2010-07-30 172 views
1

我有一個asp頁面有一個iframe。我需要將自動高度設置爲iframe。我在iframe sizing - cross browser issue 找到一篇文章,但它不能解決我的問題。 我的iframe是自動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

是否在與包含文檔不同的域上使用iframe內容? – 2010-07-30 09:58:45

+0

是安迪... iframe內容來自不同的域 – Anil 2010-07-30 10:01:50

回答

0

Could'nt你只需要使用HTML屬性 「高度」,並將其設置到例如 「90%」?或者佈局更復雜?在這種情況下,您可以使用css-attribute並使用jQuery動態更改。

+0

謝謝奧拉夫。但情況有點複雜。我不知道什麼時候身高會在高峯期或什麼時候。所以我需要可靠的解決方案。 – Anil 2010-07-30 10:12:23

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) %>">