Avatar billede sbm Nybegynder
21. oktober 2004 - 20:55 Der er 10 kommentarer og
1 løsning

scrollHeight giver forskellige værdier?

Jeg bruger scrollHeight til at finde den samlede højde på et dokument, så jeg kan lave en iframe der kan smyge sig rundt om.

Så langt så godt. Nu er jeg stødt på et problem.

Hvis browservinduet ikke er særlig højt, men dokumentet inde i iframen er langt, får jeg en forkert værdi returneret?

Jeg prøver f.eks. at hente værdien med
self.topiframe.document.body.scrollHeight

Så kan jeg få returneret 200 selv om dokumentet er over 1000 pixels højt, og så bliver min iframe selvfølgelig for lille.

Hvis jeg flytte linien ned i dokumentet inde i iframen, så den selv smager på sin egen højde, returnerer den korrekt værdi, men det dur i mit tilfælde bare ikke. Jeg er nødt til at have dette check liggende i det omkringliggende dokument.

Hvorfor kan jeg ikke få returneret den korrekte værdi udefra?
Avatar billede olebole Juniormester
21. oktober 2004 - 21:31 #1
<ole>

Prøv at lægge en URL til eksemplet. Du laver én eller flere fejl, men det er ikke til at sige, hvad. Man kunne dog forestille sig noget med dine DTD'er. Prøv med en URL  :)

/mvh
</bole>
Avatar billede sbm Nybegynder
21. oktober 2004 - 21:51 #2
Jeg har fået pejlet mig en anelse ind på hvor filmen knækker.

Jeg har en lille funktion der sætter fontstørrelsen, alt afhængig af hvor meget plads der er at gøre godt med. Hvis den funktion er kommenteret ud, fungerer alting som det skal. Men jeg har sådan set brug for at have den funktion. :-)

http://www.bang-madsen.dk/test/iframe.htm
Avatar billede sbm Nybegynder
21. oktober 2004 - 21:52 #3
Jeg har lavet bunden sort, så det er lidt lettere at se hvor iframe slutter.
Avatar billede roenving Novice
21. oktober 2004 - 22:02 #4
Jeg fik da to ganske rimelige, nemlig 495 i IE og 510 i Mozilla, det lyder som nogenlunde rimelig 'tilfældig' forskel ...

Men du laver faktisk en ret alvorlig css-fejl i din fontstørrelses-funktion, prøv i stedet:

<script type="text/javascript">
var fontsize=20;
function checkFontSize() {
  fontsize = Math.round(fontsize * document.body.clientWidth / 800)+'px';//Måske er scrollWidth bedre ...
  self.indhold.document.body.style.fontSize=fontsize;
  self.document.body.style.fontSize=fontsize;

  var t=self.indhold.document.body.scrollHeight;
  alert('Ifølge scrollHeight er indhold.htm '+t+' pixels højt.');
  document.getElementById('indhold').style.height=t+'px';
}
window.onload = checkFontSize;
</script>

-- og så skal onload væk fra body:

<body>
Avatar billede sbm Nybegynder
21. oktober 2004 - 22:41 #5
Et par udemærkede rettelser. Takker. Men den lider nu stadig af det samme problem.

Prøv først at hente dokumentet ind. Det vil næppe være noget problem at se hele IFRAMEN på et enkelt skærmbillede, og der fungerer det også fint nok. Men prøv at så gøre browservinduet meget fladt, så den kun kan vise ca. halvdelen af indholdet. (ca. til og med linien 8 Test. Prøv så at refreshe dokumentet. Nu giver den en markant mindre højde, selv om det er præcis det samme dokument vi viser. Maksimer så vinduet igen, og du kan se at iframen slutter et stykke oppe i forhold til dokumentets fulde længde. Spøjst nok altid så det passer med et linieskift.
Avatar billede sbm Nybegynder
21. oktober 2004 - 22:55 #6
Jeg tror ikke det er et trivielt problem, så jeg smider lidt flere point i.
Avatar billede sbm Nybegynder
22. oktober 2004 - 10:18 #7
Ingen kvalificerede bud? En work-around vil også kunne accepteres. :-)
Avatar billede roenving Novice
22. oktober 2004 - 14:28 #8
-- måske kan du bruge nogle af principperne fra en af disse links, som blev lagt i et andet spørgsmål, jeg har haft fat i:

http://www.howtocreate.co.uk/perfectPopups.html
http://www.quirksmode.org/js/winprop.html#ex
http://codepunk.hardwar.org.uk/ajs03.htm

-- jeg har kun kigget på det første, og det handler principielt om popups, men principperne er de samme for en (i)frame er også en window-objekt !-)
Avatar billede sbm Nybegynder
25. oktober 2004 - 11:03 #9
Jeg fik strikket en løsning sammen.

Jeg endte med at tage innerHTML for hele body, og så sætte et div-tag rundt om hele body's indhold. Den div-tag kan jeg så få returneret en korrekt højde på.

Jeg fik ideén til løsningen i et af dine links. Smider du et svar?
Avatar billede roenving Novice
25. oktober 2004 - 16:32 #10
Velbekomme '-)
Avatar billede roenving Novice
25. oktober 2004 - 16:51 #11
-- og 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