2010-07-30 5 views
1

J'ai une page ASP avec un iframe. Je dois définir la hauteur automatique à iframe. J'ai trouvé un article sur iframe sizing - cross browser issue mais il n'a pas pu résoudre mon problème. Mon iframe estHauteur de l'Iframe automatique

<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> 

et le code à la page asp est:

<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> 

Dans le cas où je ne donne pas une hauteur fixe en iframe il coupe simplement le contenu iframe.

quoi de mal que je fais alors que le script ci-dessus est marqué comme réponse ??

Aide ...

+0

Le contenu iframe sur un domaine différent du document contenant? –

+0

oui Andy ... le contenu iframe vient de domaine différent – Anil

Répondre

0

Could'nt vous simplement utiliser html attribut "hauteur" et réglez-le par exemple "90%"? Ou sont les dispositions plus compliquées? Dans ce cas, vous pouvez utiliser un attribut css et le modifier dynamiquement avec jQuery.

+0

Merci Olaf. Mais la situation est un peu compliquée. Je ne sais pas quand la hauteur sera au pic ou quoi que ce soit. J'ai donc besoin d'une solution fiable. – Anil

0
var h=document.documentElement.scrollHeight; 

C'est la hauteur du document, pas la hauteur de la fenêtre. Vous voulez probablement clientHeight pas scrollHeight. Assurez-vous également que vous utilisez un mode de normes <!DOCTYPE, sinon vous obtenez le mode Quirks où vous devez regarder document.body à la place. (Et beaucoup d'autres propriétés indésirables.)

Dans les navigateurs autres que IE6-7, vous pouvez le faire sans script. Voir this question.

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

Injection HTML. Une requête comme ?a=><script>alert(document.cookie)</script> peut injecter du contenu de script dans votre page, ce qui vous donne des failles de sécurité potentielles XSS. Dans tous les cas, vous devez également être codant pour tous les paramètres URL de requête que vous êtes sur le point d'insérer dans une 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) %>"> 
Questions connexes