Автоматическая высота Iframe - PullRequest
1 голос
/ 30 июля 2010

У меня есть страница asp с iframe.Мне нужно установить автоматическую высоту в iframe.Я нашел статью о размерах 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.* что я делаю не так, пока приведенный выше скрипт помечен как ответ ??

Справка ...

Ответы [ 2 ]

0 голосов
/ 30 июля 2010
    var h=document.documentElement.scrollHeight;

Это высота документа, а не высота окна. Вы, вероятно, хотите clientHeight не scrollHeight. Также убедитесь, что вы используете стандартный режим <!DOCTYPE, в противном случае вы получите режим Quirks, в котором вместо этого вы должны смотреть на document.body. (И многие другие нежелательные свойства.)

В браузерах, отличных от IE6-7, вы можете сделать это без скрипта. См этот вопрос .

?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) %>">
0 голосов
/ 30 июля 2010

Не могли бы вы просто использовать html-атрибут "height" и установить его, например, "90%"? Или макеты сложнее? В этом случае вы можете использовать атрибут css и динамически изменить его с помощью jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...