Avatar billede travelnow Nybegynder
09. februar 2006 - 10:43 Der er 19 kommentarer og
1 løsning

scrollTop og iframe

Jeg har en side hvor jeg dynamisk placerer et layer sådan at den altid bliver vist i toppen af siden, og det virker fint nok, men nu er mit problem at siden skal ligge i et iframe og så virker det ikke mere. Jeg kan godt regne ud hvorfor det ikke virker, det er selvfølge fordi den læser scollTop i forhold til iframe'et, som jo ikke ændre position.
Men hvordan kan jeg aflæse scrollTop i forhold til iframe, har prøvet med
documentTop = parent.document.body.scrollTop, men får en access denied?
Avatar billede travelnow Nybegynder
09. februar 2006 - 12:10 #1
Nu har jeg fået linien
documentTop = parent.document.body.scrollTop
til at virke, men problemet er nu at den ikke giver mig det ønskede resultat, den returner positionen i forhold til iframe, altså det samme som document.body.scrollTop.

Det jeg skal bruge er positionen i forhold til vinduet, altså den side hvor iframe'et ligger på.
Avatar billede olebole Juniormester
09. februar 2006 - 14:56 #2
<ole>

Noget tyder på, du bruger en forkert eller ingen DTD. Et HTML-dokument _skal_ påbegyndes med en fuld DTD ... f.eks:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
... osv - osv ...

Ellers går der rod i den, fordi IE uden DTD opfører sig meget anderledes end andre browsere. Således kan du ikke bruge CSS i IE uden - eller med en mangelfuld - DTD. Ligeledes er det altid document-elementet (html-elementet), der scroller ... ikke body-elementet.
Derfor skal du hele tiden skrive forskellige koder til forskellige browsere, hvis du ikke bruger DTD'en  ;o)

/mvh
</bole>
Avatar billede travelnow Nybegynder
10. februar 2006 - 00:51 #3
Hmmm, kan du udybe ovenstående, jeg kan ikke få det til at virke.

Kan du (eller en anden) lave et lille eksempel ala. nedenstående, som virker

Side1.html
<html>
<body>
<script>
  alert(document.body.scrollTop)
  alert(parent.document.body.scrollTop)
</script>
</body>
</html

Side2.html
<iframe name="TestFrame" id="TestFrame" src="side1.html" width="500" height="1500">
Avatar billede olebole Juniormester
10. februar 2006 - 01:23 #4
Som sagt bør du bruge DTD'en, jeg skrev ... også når du tester. Ellers kan du ikke regne med noget somhelst.

Derudover står det ikke klart for mig, hvad dit problem er  :)
Avatar billede travelnow Nybegynder
10. februar 2006 - 10:37 #5
Jeg forstår ikke hvorfor du ikke kan forstå hvad jeg mener, jeg synes ellers jeg har forklaret/illustreret problemet rimelig godt.

Men nu har jeg fået det til at virke, jeg prøvede blot at oprette det lille eksempel jeg gav, og så virkede det sgu, men hvis jeg indsætter din DTD virker det ikke mere, så den DTD er forkert. Jeg bruger flg.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
men det virker også helt uden DTD linie.

Men hvis du kommer med et svar, får du de 60 point, du ledte mig på sporet/fik mig til at lave et eksempel som virker.
Avatar billede olebole Juniormester
10. februar 2006 - 12:50 #6
Det er muligt, du mener at have forklaret det tydeligt - men altså ikke så tydeligt, så andre har forstået det  :)

Nej, du er stadig ikke på sporet af en løsning. Den DTD, du anvender disabler - som jeg skrev ovenfor - de vigtigste dele af CSS i IE ... og det er jo ikke smart. Eneste grund til, noget virker, er altså, at du har sørget for, CSS ikke virker i dokumentet.

I et dokument, der overholder CSS, er det som sagt ikke body-, men dokument-elementet, der scroller. Det troede _jeg_ tilgengæld var forklaret tydeligt nok  ;o)

Med en fuld DTD, skal der således stå noget à la:
    document.documentElement.scrollTop
Avatar billede travelnow Nybegynder
10. februar 2006 - 14:12 #7
Ok
Men jeg tror ikke jeg forstår det helt (et lille eksempel ville være godt), men hvis jeg forstår dig rigtig, så burde nedestående vel virke.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<input type="hidden" value="xxxx" name="test" id="test">
<script>
  alert(document.test.scrollTop);
</script>
</body>
</html>

den burde vel give mig forskellige værdier afhængig af hvor lang siden er scrollet.
eller 'alert(document.getElementById("test").scrollTop);' burde virke, men det virker ikke.

Så har du ikke et eksempel?
Avatar billede olebole Juniormester
10. februar 2006 - 14:15 #8
Som jeg skrev, giver:
    document.documentElement.scrollTop

- det antal pixels, siden er scrollet ned. Jeg kan ikke give dig et eksempel, da det - som sagt - stadig ikke er klart for mig, hvad det er, du vil
Avatar billede olebole Juniormester
10. februar 2006 - 14:17 #9
- og på onload er der jo ikke noget, der er scrollet nogen stder hen. Du er naturligvis nødt til at scrolle, før der er en afstand, du kan aftaste  :)
Avatar billede travelnow Nybegynder
10. februar 2006 - 14:30 #10
Hvis du opretter det lille eksempel jeg skrev, altså en side1 og en side2 (uden DTD).
Start side2.html den vil give dig 2 tal, flyt på scrollbaren tryk på 'F5' tasten nu returnerer linien 'alert(parent.document.body.scrollTop)' et tal størrer end 0.

Det er det spørgsmålet går ud på, altså at kunne aflæse parent.scrollTop fra en side i en iframe, det har jeg sådan set løst, bortset fra at det åbenbart ikke er den rigtige måde at gøre det på.

Så igen kan du lave et eksempel der svarer til mit eksempel, men sådan at det overholder det det skal?
Avatar billede olebole Juniormester
10. februar 2006 - 14:34 #11
Sorry, men jeg forstår stadig ikke, hvad du mener. Prøv at uploade et eksempel på det, du gerne vil
Avatar billede travelnow Nybegynder
10. februar 2006 - 14:41 #12
det har jeg da gjort, kig op, et sted står der side1.html og lidt længere nede står der side2.html, det er det eksempel jeg snakker om
Avatar billede olebole Juniormester
10. februar 2006 - 15:22 #13
Jeg giver op ... dette er der en anden, der må hjælpe dig med
Avatar billede travelnow Nybegynder
10. februar 2006 - 15:32 #14
Ja nu giver jeg sgu også op, enten tager du fis på mig, eller også er der et og andet galt med dig.

Tak for sludderen OlleBolle
Avatar billede olebole Juniormester
10. februar 2006 - 15:42 #15
*ROTFLMAO* Ja, for det er jo helt utænkeligt, det evt. skulle være dig, der er noget galt med  :D

Foreløbig har jeg afleveret 2.886 besvarelser, folk har kunnet bruge. 2.886 spørgemål, hvor spørgeren og jeg ikke har talt 180 grader forbi hinanden.

Så kan du jo genoverveje, hvem af os, der er noget galt med  ;D
Avatar billede olebole Juniormester
10. februar 2006 - 15:43 #16
- og læg mærke til, der - helt mod sædvane - ikke er andre, der har blandet sig i tråden. Mon ikke, det kan give dig et hint om, hvem der er noget galt med?  ;o)
Avatar billede travelnow Nybegynder
13. februar 2006 - 09:55 #17
ja ja, men jeg har nu oprettet mange spørgsmål og der har folk nu ikke haft problemer med at forstå hvad jeg skriver, men ok jeg har også kigget på din profil, og du er ikke helt uden evner.
Men jeg bruger så bare den løsning jeg selv er komme med, da den virker fint nok, selv om jeg nu har disabled css.

Jeg opretter et et andet spørgsmål inden for samme emne, og hvis du nu ikke forstår hvad jeg mener, så bare lad være med at kommentere/svare på det. :-)
Avatar billede olebole Juniormester
13. februar 2006 - 14:03 #18
- jamen, så er der jo ingen, der kommenterer/svarer. Så meget troede jeg stod klart efter denne tråd ... vi to er jo som bekendt de eneste, der har skrevet her  ;o)
Avatar billede olebole Juniormester
13. februar 2006 - 14:08 #19
- og jeg kan i øvrigt se på det andet spm, jeg ikke er den eneste, du har vanskeligt ved at kommunikere med  =)
Avatar billede travelnow Nybegynder
20. februar 2006 - 09:39 #20
Hvad er du forresten ude på, vil du bare svine mig til så meget som mulig, jag sagde jo at du skulle lade være med at blande dig, hvis du ikke forstod eller kunne svare på spørgsmålet.
Men det er måske på den her måde du plejer at behandle/hjælpe folk på, hvis du ikke kan forstå spørsmålet eller kender svaret, latterlig gører du dem i stedet for.

Og forøvrig fik jeg jo svar på det jeg spurgte om.

Men som sagt lad være med at gøre grin med folk fordi du ikke forstår dem, det kunne jo være at det var dig der var noget i vejen med. Jeg arbejder trods alt som udvikler/supporter, hvor det halve af min tid går med at besvare spørgsmål fra vores kunder, så jeg har ingen problemer med at kommunikere.

Men det har du åbenbart, når du lige synes at du ville svine mig til.
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