Avatar billede fhansen Praktikant
30. januar 2007 - 22:52 Der er 16 kommentarer og
1 løsning

dynamisk height på iframe

Hej

jeg har en iframe,som ligger i en tabel, i iframen bliver der så indlæst forskellige sider, sider har forskellige heights.
Mit spørgsmål er så jeg vil gerne have at iframe får samme height som den indlæste side, således at brugeren ikke får en scollbar på iframe, men må bruge men må bruge browserens scollbar
Hvordan kan dette  gøres
Avatar billede gentlebug Nybegynder
30. januar 2007 - 22:57 #1
er løsningen ikke bare at lade være med at bruge iframe?
Avatar billede fhansen Praktikant
31. januar 2007 - 00:15 #2
Så mister jeg vel muligheden for transparency ??
Avatar billede roenving Novice
02. februar 2007 - 00:59 #3
F.eks. i iframen:

<script type="text/javascript">
window.onload = function(){
var t=document.body.scrollHeight;
if(parent!=window)parent.document.getElementById('IFRAMEID').style.height=t+22+'px';
}
</script>

-- og så skal iframe-tagget have et id="IFRAMEID" ...

-- eller du skal lave det om i funktionen, så det matcher iframens id (som den _skal_ have !-)
Avatar billede fhansen Praktikant
02. februar 2007 - 22:36 #4
Jeg bliver vist nødt til at spørge hvor scriptet skal indsættes, er lidt ny i dette.
Avatar billede roenving Novice
03. februar 2007 - 12:30 #5
Det skal indsættes i den fil, der loades i iframen !-)
Avatar billede fhansen Praktikant
05. februar 2007 - 01:04 #6
Hmmm den virker ikke for mig, det kunne virke som at
var t=document.body.scrollHeight; ikke bliver sat da det ser ud som framen bliver sat 22px.

Min celle med iframe ser sådan ud

<td width="735" rowspan="9" valign="top"  height="100%"><iframe src="Right.html"  style="" name="Contents" width="700" height="600" align="top"  scrolling="auto" frameborder="0" id="Contents" allowtransparency="true" ></iframe></td>
Avatar billede roenving Novice
05. februar 2007 - 18:45 #7
Har du også husket:

...getElementById('Contents').style...
Avatar billede fhansen Praktikant
05. februar 2007 - 19:43 #8
Ja det har jeg scriptet har jeg sat ind efter STYLE i head
Avatar billede fhansen Praktikant
05. februar 2007 - 19:51 #9
<script type="text/javascript" src="dropdowntab.js"></script>
<script type="text/javascript">
window.onload = function(){
var t=document.body.scrollHeight;
if(parent!=window)parent.document.getElementById('Contents').style.height=t+22+'px';
}
</script>
<style type="text/css">

body {
    margin-top:0;
    margin-left:0;
    margin-right:0;
    background-image: url(Images/OPOCEAN2.JPG);   
}
.lien {
    position: relative; top: -5px; color: #FFFFFF; font-size: 8pt; font-family: verdana;  font-weight
Avatar billede fhansen Praktikant
05. februar 2007 - 19:54 #10
Jeg er nu sikker på at den ikke læser height på den indlæste side
Avatar billede fhansen Praktikant
07. februar 2007 - 11:18 #11
Håber ikke at du helt har opgivet mig, jeg har brugt en del tid på sitet, og er stødt ind i dit nick mange gange,  jeg tror du ved hvad hvad du snakker om.

Jeg har også fundet ud af at dit script fungere, når det bliver læst ind fra starten, altså når sitet bliver loadet, men det jeg har brug er flg.

jeg anvender iframen Contents til at loade forskellige sider, valgt fra forskellige menuer, d.v.s at jeg har brug for at få en nye height på contents, hver gang brugeren vælger en ny side.
Avatar billede roenving Novice
07. februar 2007 - 13:59 #12
Så længe det er sider fra dit eget domæne, kan du jo lave en funktion, du kalder, når der loades en ny side i (i)framen:

...
<iframe name="Contents" id="Contents" ...
...

...
<a href="enUnderSide" target="Contents" onclick="setTimeout('resizeFrame()',150);">En underside</a>
...

-- og udsættelsen er for at forsøge at sikre, at siden i framen er loadet, tiden kan evt. gøres længere eller kortere end de 150 mllisekunder !-)

...
function resizeFrame(){
  var frameBody = window.Contents.document.body;
  document.getElementById("Contents").style.height = frameBody.scrollHeight + 22 + "px;
}
...
Avatar billede fhansen Praktikant
08. februar 2007 - 01:15 #13
Sorry det virker ikke, jeg får næsten samme fejl, men nu se at enUnderSide bliver læst ind, og at efter de 450 millisek. bliver framen sat til 22px
Avatar billede fhansen Praktikant
24. februar 2007 - 00:19 #14
Jeg har nu leget en del med dine foreslag, men kan ikke får det til at virke, jeg får en error on page !!

denne fungere for mig
<script type="text/javascript">
window.onload = function(){
document.getElementById('Layer2').style.height=2000;
}
</script>

Men det gør denne ikke
<script type="text/javascript">
window.onload = function(){
var hg=2000;
document.getElementById('Layer2').style.height=hg;
}
</script>

mit problem ligger i at jeg ikke kan få den til at læse height på siden.
Avatar billede fhansen Praktikant
24. februar 2007 - 21:10 #15
roenving
Så fik jeg til at virke, skulle nok have lavet dig se noget mere af min kode, så havde sikkert set min fejl for længe siden.
se evt. http://www.eksperten.dk/spm/764547.

Du har ærlig og redeligt fortjent dine points, så......
Avatar billede roenving Novice
25. februar 2007 - 00:57 #16
Velbekomme '-)
Avatar billede roenving Novice
27. februar 2007 - 01:29 #17
-- tak for 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