Avatar billede tpiil Nybegynder
30. maj 2002 - 21:57 Der er 24 kommentarer og
2 løsninger

Scrolling i iframe

Jeg har en iframe uden scrollbarer, og så har jeg 2 knapper (billeder med link) udenfor iframe'en som linke til noget så man kan scrolle op og ned i iframen...

håber i forstå...
Avatar billede tpiil Nybegynder
30. maj 2002 - 21:58 #1
altså 2 billeder med links, det ene skal kunne scrolle op og det andet ned ad...
Avatar billede =maddog= Nybegynder
30. maj 2002 - 22:01 #2
i IE skal du bruge scroll() og i NS skal du bruge scrollTo()
Avatar billede =maddog= Nybegynder
30. maj 2002 - 22:16 #3
omvendt. og husk at du har ikke rettigheder til et window object på en remote side.
Avatar billede tpiil Nybegynder
30. maj 2002 - 22:18 #4
ok, men hvordan får jeg den så til at rykke f.eks. 5 px ned og underordnet med hvor y positionen står?
Avatar billede =maddog= Nybegynder
30. maj 2002 - 22:29 #5
<script>
ypos = 0;
function scrollY(lng) {
ypos += lng; if (ypos<0) ypos = 0; // check for længde også
if (document.all&&window.print) document.myfrm.scrollTo(0,ypos);
else ns=false; // Et eller andet NS - document.getElementById('myfrm').scroll(0,ypos);
}
</script>

her er lidt at lege med
Avatar billede tpiil Nybegynder
30. maj 2002 - 22:34 #6
thx svare du lige?
Avatar billede jakoba Nybegynder
30. maj 2002 - 22:37 #7
=maddog= scroll() er et levn fra gamle dage. Det er rimeligt sikkert at benytte de nye funktioner:
  scrollTo( Xpos, Ypos );
og
  scrollBy( Xstep, Ystep );

med tpiils knapper vil scrollBy funktionen nok være den bedste:

<script>


var timHandle = 0;

function startScroll( retning ) {
    if ( retning = 'op' ) {
        timHandle=setInterval( "document.iframeNavn.scrollBy( 0,-5)", 50 );
    } else {
        timHandle=setInterval( "document.iframeNavn.scrollBy( 0,5)", 50 );
    }
}; //end startScroll( string )

function stopScroll();
    clearInterval( timHandle );
}; //end stopScroll()

</script>

dine billeder skal så omkranses af et link med mouseover handlere:

<a href="" onclick="return false;"
    onMouseover="startScroll( 'op' );"
    onmouseout="stopScroll()"><img src="opbilled.gif"></a>

<a href="" onclick="return false;"
    onMouseover="startScroll( 'ned' );"
    onmouseout="stopScroll()"><img src="nedbilled.gif"></a>

mvh JakobA
Avatar billede =maddog= Nybegynder
30. maj 2002 - 22:40 #8
ooohh. ok. takker.
Avatar billede tpiil Nybegynder
30. maj 2002 - 22:43 #9
=maddog= >> dit virker ikke i ns og det er faktisk et krav :)

jakoba >> jeg får fejl med dit script?
Avatar billede jakoba Nybegynder
30. maj 2002 - 22:48 #10
Hvilken NS skal det virke med? NS4.7 har slet ikke iframes?
Ns6 har dem, men du bør nok bruge =maddog='s adressering:

        timHandle=setInterval( "document.getElementById('myfrm').scrollBy( 0,-5)", 50 );
    } else {
        timHandle=setInterval( "document.getElementById('myfrm').scrollBy( 0,5)", 50 );

men mister så IE4, er det OK?

mvh JakobA
Avatar billede jakoba Nybegynder
30. maj 2002 - 22:51 #11
og den 'sædvanlige fejl i if sætningen  brug == istedet for = til sammenlingning
    if ( retning == 'op' ) {
Avatar billede =maddog= Nybegynder
30. maj 2002 - 22:52 #12
<script>
ypos = 0;
function scrollY(lng) {
ypos += lng; if (ypos<0) ypos = 0; // check for længde også
if (document.all&&window.print) document.myfrm.scrollTo(0,ypos);
else document.getElementById('myfrm').contentWindow.scrollTo(0,ypos);
}
</script>
Avatar billede =maddog= Nybegynder
30. maj 2002 - 22:53 #13
jakoba> iframe er windowed i NS, så man skal bruge contentWindow for at skabe en reference i det indeholdte window objekt.
Avatar billede jakoba Nybegynder
30. maj 2002 - 22:56 #14
ooohh. ok. takker.

Nogen gange har jeg en fornemmelse af at man lærer mere ved at svare end ved at spørge :-))
Avatar billede tpiil Nybegynder
30. maj 2002 - 22:57 #15
men virker stadig ikke i NS 6 :(
Avatar billede =maddog= Nybegynder
30. maj 2002 - 22:58 #16
det er faktisk 100% rigtigt. skal vi tage en deler?
PS: forskellen mellem windowed og windowless iframes er faktisk ret store. det er blandt andet det der gør at man heller ikke kan sætte zIndex i NS.
Avatar billede =maddog= Nybegynder
30. maj 2002 - 23:00 #17
tpiil> jeg har tjecket min (kl 22.52.32) i NS7 og det virker fint og upåklageligt. her er min testside.
<html><head>
<script>
ypos = 0;
function scrollY(lng) {
ypos += lng; if (ypos<0) ypos = 0; // check for længde også
if (document.all&&window.print) document.myfrm.scrollTo(0,ypos);
else document.getElementById('myfrm').contentWindow.scrollTo(0,ypos);
}
</script>
</head><body>
<iframe src="file:///C|/WINDOWS/Desktop/submitter.html" id="myfrm" name="myfrm" width="100" height="100" align="center" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<a href="#" onclick="scrollY(20)">OP</a>
<a href="#" onclick="scrollY(-20)">Ned</a>
</body></html>
Avatar billede tpiil Nybegynder
30. maj 2002 - 23:09 #18
men så virker det ikke i 6.0...
Avatar billede =maddog= Nybegynder
30. maj 2002 - 23:17 #19
Nu har jeg godt nok lige opgraderet til NS7 men jeg nægter at tro på det ikke virker. har du prøvet at trykke på begge knapper. jeg bruger omvendt logik (Op betyder at scrolle ned. jeg ser det fra sidens synsvinkel og den bevæger sig op).
Avatar billede tpiil Nybegynder
30. maj 2002 - 23:19 #20
der sker intet når man klikker...
Avatar billede =maddog= Nybegynder
30. maj 2002 - 23:32 #21
det har du 100% ret i. contentWindow er Moz0.98 hvilket først er blevet standard i NS7. NS6.2 kører Moz0.94 og NS6.1 kører Moz0.92 og ingen af dem understøtter contentWindow.
Så vi er faktisk derude hvor det slet ikke kan lade sig gøre vil jeg sige.
Ærgeligt. Og jeg har lært at der er forskel på NS6 og NS7. grr. mere grus i kompatibilitets maskinen.
Avatar billede tpiil Nybegynder
30. maj 2002 - 23:35 #22
kan lade sig gøre, det har jeg set og så kan man også, men tak for hjælpen jeg deler bare lige over :)
Avatar billede =maddog= Nybegynder
30. maj 2002 - 23:35 #23
vent lidt. contentDocument er i hvert fald i Moz0.92 så vi kan få fat i det tilhørende med defaultView. prøv
document.getElementById('myfrm').contentDocument.defaultView.
istedet for
document.getElementById('myfrm').contentWindow
som en sidste chance.
Avatar billede =maddog= Nybegynder
30. maj 2002 - 23:38 #24
og husk at bruge en lokal fil til at teste på. ellers får du en permission denied exception.
Avatar billede tpiil Nybegynder
30. maj 2002 - 23:45 #25
se nu virkede den thx :)
Avatar billede =maddog= Nybegynder
30. maj 2002 - 23:48 #26
no probs. det blev også ret langhåret her til sidst. ikke noget man sådan lige ville tænke på i første gæt.
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