Avatar billede agertoft Nybegynder
09. juni 2006 - 13:40 Der er 12 kommentarer og
2 løsninger

IFrame højde

Jeg har en webside med en iframe i den.

Jeg har haft det problem at gøre selve IFramen til samme højde som min IFramens scroll-højde - altså undgå at den nogensinde scroller. Det har jeg løst på følgende måde og det virker!

function calcIframeHeight(iframe)
{
    //find the height of the internal page
    var the_height = iframe.contentWindow.document.body.scrollHeight;
   
    //change the height of the iframe
    document.getElementById(iframe.id).height = the_height +50;           
}

IFramen bliver initialiseret således:

<IFRAME id=calendar marginWidth=0 marginHeight=0 onLoad='calcIframeHeight(this)' scrolling='AUTO' src='Calendar.aspx' frameBorder=no width='100%' height='100%'></IFRAME>

Mit problem er, at jeg inde i IFramen kan lave postback og dermed kan jeg risikere at scroll-højden ændres og dermed bliver min IFrame's højde for lille og så kommer der en scroll-bar.

Det er altså ikke første gang jeg loader siden jeg har et problem, men efter postback i IFramen. Hvordan løser jeg dette?
Avatar billede Slettet bruger
09. juni 2006 - 15:00 #1
Kan det ikke være du skal skrive det i asp.net forum'et?
Avatar billede agertoft Nybegynder
09. juni 2006 - 15:48 #2
Eftersom det ikke handler om asp.net er svaret nej. Har du læst mit spørgsmål igennem?
Avatar billede Slettet bruger
09. juni 2006 - 18:23 #3
Er din side i en frame?
Avatar billede agertoft Nybegynder
09. juni 2006 - 18:40 #4
I en IFrame ja.
Avatar billede Slettet bruger
09. juni 2006 - 18:48 #5
Ok. Men der er jo ASP.net i så derfor ved jeg det ikke. Da jeg havde det problem var det fordi min side var i frames
Avatar billede agertoft Nybegynder
09. juni 2006 - 18:58 #6
At jeg skriver i asp.net har ikke rigtig noget at gøre med mit problem...
Avatar billede Slettet bruger
09. juni 2006 - 20:38 #7
Glem det jeg sagde. Jeg havdet det samme problem men det er fordi det var i frameset
Avatar billede thrytter Nybegynder
10. juni 2006 - 11:25 #8
Kan muligvis løses ved, at hver side som loader i iframen kalder en function ved onload.

eks.
function setH()
{
  var h = document.body.scrollHeight + 25;

  if (window.parent.document.getElementById("calender"))
    window.parent.document.getElementById("calender").style.height = h;
}

Kræver vist nok at siderne i iframen ligger på samme domæne som hovedsiden.
Avatar billede mclemens Nybegynder
11. juni 2006 - 01:58 #9
Fandt lidt her: http://www.eksperten.dk/spm/702689
og lidt her: http://www.eksperten.dk/spm/705245



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<script type="text/javascript">
function alignif(type){
tn=document.getElementById("cont");
if(document.all){
  tn.style.height=contwin.document.body.scrollHeight+'px';
  contwin.document.body.onresize=function(){
  document.getElementById('cont').style.height=contwin.document.body.scrollHeight+'px';
  }
}else{
  if(type==0)setInterval("alignif(1);",100);
  tn.style.height=contwin.document.body.scrollHeight+'px';
}
}
</script>

<style type="text/css">
body{background:white;}
</style></head>
<body>
      <iframe onload="alignif(0);" id="cont" SRC="2.html" NAME="contwin" width="100%" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" border="no">
      </iframe>
</body>
</html>





og 2.html test dokument:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><style type="text/css">
body{background:red;}
</style></head>

<script type="text/javascript">

tmptxt="<b onclick=\"txt=tmptxt;for(i=0;i<100;i++)txt+='<br>a';txt+='end';document.body.innerHTML=txt;\">Test1</b><br><b onclick=\"txt=tmptxt;for(i=0;i<5;i++)txt+='<br>a';txt+='end';document.body.innerHTML=txt;\">Test2</b>";
</script>

<body>


<b onclick="txt=tmptxt;for(i=0;i<100;i++)txt+='<br>a';txt+='end';document.body.innerHTML=txt;">Test1</b><br><b onclick="txt=tmptxt;for(i=0;i<5;i++)txt+='<br>a';txt+='end';document.body.innerHTML=txt;">Test2</b><br><br><br><br><br>
a</a><br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>b

</body></html>
Avatar billede agertoft Nybegynder
13. juni 2006 - 16:48 #10
thrytter, det virker... synes jeg havde lavet noget lignende. Men det kører nu :) Læg et svar...
Avatar billede thrytter Nybegynder
13. juni 2006 - 19:08 #11
Burde dele point med mclemens da hans (eller hendes) løsning også burde virke, endda uden der skal lægges kode ind på hver enkelt side.
Avatar billede mclemens Nybegynder
13. juni 2006 - 19:57 #12
Tjah hvis du synes thrytter så ok :)
- Kast 20 til mig og resten til thrytter...

[ da -> hans <-  løsning også burde virke, endda uden der skal lægges kode ind på hver enkelt side. ] - Jeps den skal kun ind på selve hoved siden/iframen ... dog så skal den side der er i iframen være på samme domæne ellers bliver det til cross-site javascripting og det er deaktiveret i de fleste browsere af sikkerhedsårsager...
Avatar billede mclemens Nybegynder
13. juni 2006 - 23:29 #13
tak for point :) ... thrytter skal jeg overføre lidt
til dig? - jeg skulle jo nødig stjæle point :D
Avatar billede thrytter Nybegynder
14. juni 2006 - 07:48 #14
mclemens>> Er fuldt ud tilfreds med de 50 point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester