22. januar 2008 - 13:02
Der er
101 kommentarer og 1 løsning
Scroll med javascript
Jeg bruger javescript til scroll, men jeg vil gerne have den til at scrolle lige så længe musen holdes over knappen. onmouse=\"startscroll(+20)\" Kan man det? og om muligt så refreshe siden 10 sek. efter at musen er fjernet fra knappen.
Annonceindlæg fra Infor
22. januar 2008 - 13:40
#1
Husk at det hedder onmouseover og ikke onmouse. At det virker, synes jeg, er lidt utroligt. =) Refresh kan løses ved at indsætte: onmouseout="setTimeout('window.location.reload(false)',10000)"
22. januar 2008 - 13:45
#2
og onmouseover skal så være: onmouseover="tScroll=window.setInterval('startscroll(+20)',100)" og onmouseout: onmouseout="tScroll=window.clearInterval(tScroll);setTimeout('window.location.reload(false)',10000)"
22. januar 2008 - 17:09
#3
Jeg får desværre fejlen.: "Et objekt var ventet"
22. januar 2008 - 19:57
#4
Nå for Sørensen.. Hvad hvis du ændrer onmouseover til: onmouseover="var tScroll=window.setInterval('startscroll(+20)',100)"
22. januar 2008 - 20:52
#5
Samme fejl.:(
22. januar 2008 - 21:52
#6
Kan jeg se det i aktion på nettet et sted, eller kan du sende mig koden?
22. januar 2008 - 21:53
#7
Og hvilken linje opstår fejlen i?
22. januar 2008 - 22:24
#8
Fejlen opstår i linie 1 Jeg har det ikke på nettet, men tester det i frontpage.
22. januar 2008 - 23:05
#9
Har du mulighed for at sende mig frontpage-filen? ( tobias (at) 2biaz dot dk )
22. januar 2008 - 23:48
#10
Så er den sendt.
23. januar 2008 - 07:56
#11
Har du en kode, der kan finde ud af at scrolle, dvs. ved du, om den virker, og kan du evt. også sende den til mig?
23. januar 2008 - 09:31
#12
Det er vel bare at taste en masse tekst ind på siden.
23. januar 2008 - 09:32
#13
Det har jeg gjort, men din kode scroller ikke på min side. Jeg går ud fra, jeg mangler funktionen "startscroll()"?
23. januar 2008 - 11:43
#14
Nej, jeg har ikke andet kode. Den har virker uden noget andet.: onmouseover=\"startscroll(+20)\" Så det forklare så fejlen.
23. januar 2008 - 11:52
#15
Ikke på min computer. Den kender ikke funktion startscroll() i mit IE 7, og det er heller ikke noget, jeg har hørt om før, så umiddelbart mener jeg stadig, at der mangler selve funktionen. Måske ligger den i dit frontpage?
23. januar 2008 - 19:03
#16
Det ved jeg ikke, mon der ellers er en der kan lade denne kode? Kan du?
23. januar 2008 - 19:44
#17
Nu har jeg prøvet dette, men stadig samme fejl. <script> function startScroll() { window.scrollBy(0,10); scrolldelay = setTimeout('pageScroll()',20); } function stopScroll() { clearTimeout(scrolldelay); } </script> <a href="#" onmouseover="java script:startScroll()">Start Scroll</a> <br><br> <a href="#" onmouseout="java script:startScroll()">Stop Scroll</a>
23. januar 2008 - 20:06
#18
Okay, nu virker det, men den scroller hele tiden, også selom man ikke klikker på pagescroll. <script> function pageScroll() { window.scrollBy(0,50); // horizontal and vertical scroll increments scrolldelay = setTimeout('pageScroll()',100); // scrolls every 100 milliseconds } function stopScroll() { clearTimeout(scrolldelay); } </script> <p onmousedown="java script:pageScroll()">Start Scroll</p> <br><br> <p onmouseout="java script:stopScroll()">Stop Scroll</p>
23. januar 2008 - 21:30
#19
Ja, der var funktionerne. Rigtig godt. Prøv lige at rette: clearTimeout(scrolldelay); til: scrolldelay=clearTimeout(scrolldelay);
23. januar 2008 - 22:12
#20
Problemet er nu at siden scroller hele tiden bare man klikker en gang, den skal jo kun scrolle så længe som man holder musen nede. Og 10 sek. efter at man slipper knappen skal siden refreshes.
23. januar 2008 - 22:18
#21
Har du prøvet med mit sidste forslag så? Og du kan tilføje onmouseout="setTimeout('window.location.refresh()',10000)" på det første p-element for refresh-funktionen.
23. januar 2008 - 22:26
#22
Ja de sidste forslag scroller også hele tiden.
23. januar 2008 - 22:40
#23
Sådan, men denne kode her, virker det faktisk, men det giver en scriptfejl.: scrolldeley er ikke defineret <script> function pageScroll() { window.scrollBy(0,02); // horizontal and vertical scroll increments scrolldelay = setTimeout('pageScroll()',2); // scrolls every 100 milliseconds } function stopScroll() { scrolldelay=clearTimeout(scrolldelay); setTimeout('window.location.reload()',2000); } </script> <p onmousedown="java script:pageScroll()" onmouseout="java script:stopScroll()">Start Scroll</p>
23. januar 2008 - 22:43
#24
Sådan virker det.: <script> scrolldelay = "" function pageScroll() { window.scrollBy(0,02); // horizontal and vertical scroll increments scrolldelay = setTimeout('pageScroll()',2); // scrolls every 100 milliseconds } function stopScroll() { scrolldelay=clearTimeout(scrolldelay); setTimeout('window.location.reload()',2000); } </script> <p onmousedown="java script:pageScroll()" onmouseout="java script:stopScroll()">Start Scroll</p>
23. januar 2008 - 23:06
#25
Nu er det sidste spørgsmål så, hvordan kan jeg køre funktionen i target="iframe"
23. januar 2008 - 23:25
#26
Ret window til document.getElementById("iframe1").contentWindow og sæt så i øvrigt id="iframe1" på dit iframe. Så skulle den være hjemme.
24. januar 2008 - 10:34
#27
Det synnes jeg også giver objekt fejl. Skal helekoden placeres i min menu.htm eller skal der også noget i mit iframe for at det virker?
24. januar 2008 - 13:23
#28
Nej ikke noget i dit iframe. Men husk at rette ovenstående alle de steder, hvor der nu står "window".
24. januar 2008 - 20:52
#29
Det har jeg gjort, men der opstår stadig fejlen.: "Et objekt var ventet".
24. januar 2008 - 21:37
#30
I hvilken linje?
25. januar 2008 - 07:09
#31
linie 1
25. januar 2008 - 07:56
#32
Prøv at rette: scrolldelay = "" til: scrolldelay=null; Hvornår er det i øvrigt, at den siger den fejl?
25. januar 2008 - 07:56
#33
Hov, ret til: var scrolldelay=null;
25. januar 2008 - 12:24
#34
Ups. undskyld fejlen er i linie 3 Kommer så snart man klikker på "scroll".
25. januar 2008 - 22:23
#35
Og hvilken linje er linje 3 hos dig?
26. januar 2008 - 09:28
#36
document.getElementById("iframe1").contentWindow.scrollBy(0,50); // horizontal and vertical scroll increments
26. januar 2008 - 11:47
#37
Hmm.. Gi'r den os et tegnnr. også, udover linjenr.? Og har iframen id="iframe1"?
26. januar 2008 - 12:07
#38
iframeen hedder name="iframe1"
26. januar 2008 - 12:58
#39
Jep. Den skal også have id="iframe1" - ellers kan vi ikke tilgå den i moderne, gyldig javascript.
27. januar 2008 - 10:25
#40
Det er rettet til id="iframe1" men stadig objektfejl i linie 3 (karakter 6) altså stareten af document....
27. januar 2008 - 11:56
#41
Prøv at vise mig hele koden.
27. januar 2008 - 12:27
#42
Her er hele koden.: <script> scrolldelay = "" function pageScroll() { document.getElementById("iframe1").contentWindow.scrollBy(0,50); scrolldelay = setTimeout('pageScroll()',2); } function stopScroll() { scrolldelay=clearTimeout(scrolldelay); } </script> <p onmousedown="java script:pageScroll()" onmouseout="java script:stopScroll()">Scroll</p>
27. januar 2008 - 12:34
#43
Prøv lige med: ------------------------------------- <script type="text/javascript"> scrolldelay=null; function pageScroll(){ document.getElementById("iframe1").contentWindow.scrollBy(0,50); scrolldelay=setTimeout("pageScroll()",2); } function stopScroll(){ scrolldelay=clearTimeout(scrolldelay); } </script> <p onmousedown="pageScroll()" onmouseout="stopScroll()">Scroll</p> ------------------------------------- Har kun rettet mindre problematikker. Bemærk at "java script:" er helt irrelevant i en onmousedown, onmouseout, onclick, osv., da disse er beregnet til at indeholde javascript. Så at fortælle den, at den skal fortolke javascript i en javascriptattribut er ret ligegyldigt. =) Hvis den stadig brokker sig, så prøv: ------------------------------------- <script type="text/javascript"> scrolldelay=null; function pageScroll(){ alert(document.getElementById("iframe1").); document.getElementById("iframe1").contentWindow.scrollBy(0,50); scrolldelay=setTimeout("pageScroll()",2); } function stopScroll(){ scrolldelay=clearTimeout(scrolldelay); } </script> <p onmousedown="pageScroll()" onmouseout="stopScroll()">Scroll</p> ------------------------------------- Så skulle den meget gerne alerte, om den kan "se" iframet.
27. januar 2008 - 23:31
#44
Nej. melder stadig "Object required".
27. januar 2008 - 23:34
#45
Heller ikke med alerten? Hov, scrolldelay=null; skulle være var scrolldelay=null;
28. januar 2008 - 10:15
#46
Nej stadig "Object required". Det kan åbenbart ikke lade sig gøre på den måde.
28. januar 2008 - 10:59
#47
Sorry, der skal jo ikke være punktum her i: alert(document.getElementById("iframe1").); Det skal være: alert(document.getElementById("iframe1")); Det _skal_ også virke, for jeg har brugt det masser af gange. Det kan sagtens lade sig gøre.
28. januar 2008 - 12:12
#48
Jeg får stadig fejl i denne linie: document.getElementById("iframe1").contentWindow.scrollBy(0,50); Det skal måske lige siges at min menu.htm også ligger i et iframe, kan det have nogen betydning?
28. januar 2008 - 12:52
#49
Så denne kode bliver kørt fra iframen? Så skal vi gøre det sådan her: parent.document.getElementById("iframe1").contentWindow.scrollBy(0,50); Men hvad sagde alerten nu?
28. januar 2008 - 13:16
#50
Ok. nu kommer der ingen fejl, men den scroller heller ikke. Alerten melder: "Object".
28. januar 2008 - 13:31
#51
Ups. det virker faktisk nu. Men dog et par ændringer. 1)Er det muligt at opdatere siden der skal scrolles en gang inden scroll starter? 2)Når jeg klikker en gang scroller den helt i bund, der skal den kun scrolle ligeså længe musetasten holdes nede.
28. januar 2008 - 13:37
#52
1) Du opdaterer med: parent.document.getElementById("iframe1").contentWindow.location.refresh(); 2) Den ka' vi lige ta' bagefter.
28. januar 2008 - 14:13
#53
1) Med opdatering mener jeg at jeg har brug for en anden funktion på siden som jeg så henter med ASP. Siden hedder normalt scroll.asp?mode=no og inden scroll skal denne side hentes scroll.asp?mode=yes
28. januar 2008 - 15:10
#54
Så det skal være: parent.document.getElementById("iframe1").contentWindow.location.href='scroll.asp?mode=yes'; ?
28. januar 2008 - 15:21
#55
Det er fint.:) Så er det faktisk bare at siden kun skal scrolle så længe musetasten holdes nede, det er åbenbart ikke nok at skrive: <p onmousedown="pageScroll()" onmouseout="stopScroll()">Scroll</p>
28. januar 2008 - 16:01
#56
hopper den også til bunden, hvis du nu fjerner: scrolldelay = setTimeout('pageScroll()',20);
28. januar 2008 - 17:08
#57
Den skal kun hente siden en gang, koden her tilter total. (går nærmest i selvsving). parent.document.getElementById("iframe1").contentWindow.location.href='scroll.asp?mode=yes';
28. januar 2008 - 18:37
#58
Nå ja, den bliver jo kørt, hver gang der scrolles lidt ned. Sæt den ikke inde i funktionen. Den skal i stedet stå i onclick'en, lige før funktionen pageScroll kaldes.
28. januar 2008 - 19:00
#59
Det var bedre.:) Er det korrekt at funktionen kun virker i IE ?
28. januar 2008 - 19:04
#60
28. januar 2008 - 23:19
#61
Hm. ja det virker ikke i FF her. Kan det skyldes document.getElementBy funktion eller contentWindow ?
29. januar 2008 - 09:14
#62
Virkede mit link i dit FF? Både document.getElementById("iframe1") og contentWindow er standardmetoder, så det burde være det samme.
29. januar 2008 - 12:52
#63
Dit link virker her i FF, men ikke scroll-koden. Kan det skyldes at den ikke kan se mine iframes?
29. januar 2008 - 12:56
#64
Muligvis. Prøv at alerte igen ligesom tidligere og så tjek i ff
29. januar 2008 - 22:42
#65
Hvordan kan jeg i øvrigt scrolle op igen?
29. januar 2008 - 22:55
#66
Går ud fra, det må være scrollBy(0,-50)
31. januar 2008 - 13:18
#67
Ned det virker ikke med scrollBy(0,-50)
31. januar 2008 - 13:23
#68
Det gør det på min pc. =/
31. januar 2008 - 13:25
#69
Med alert i FF siger den "NULL".
31. januar 2008 - 14:30
#70
Jo. scrollBy(0,-50) det var min fejl, havde glemt at sætte scrolltimeout til samme værdi. Nu ser min kode således ud, der er et par problemer som jeg gerne vil have løst. Ved mousedown hentes sides der skal scrolles, det er fint nok, men hvis man eks. scroller et stykke ned, vælger at scrolle en smule op og derefter ned igen, hentes sides på ny, og det duer jo ikke. Så siden må kun hentes første gang der klikkes på scroll. Som tidligere nævnt får jeg værdien "NULL" i ved alert i FF. <script type="text/javascript"> var scrolldelay=null; function pageScroll(){ parent.document.getElementById("iframe1").contentWindow.scrollBy(0,+3); scrolldelay=setTimeout("pageScroll()",0); } function pageScrollup(){ parent.document.getElementById("iframe1").contentWindow.scrollBy(0,-3); scrolldelay=setTimeout("pageScrollup()",0); } function stopScroll(){ scrolldelay=clearTimeout(scrolldelay); } function endScroll(){ setTimeout("parent.document.iframe1.location.href='data.asp?status=0&scroll=false';",5000); } </script> <p onmouseover="parent.document.iframe1.location.href='data.asp?status=1&scroll=true';" onmousedown="pageScroll()" onmouseup="stopScroll()">Scroll<p> <p onmousedown="pageScrollup()" onmouseup="stopScroll()">Scroll</p>
31. januar 2008 - 15:07
#71
Så må du sætte en variable første gang, f.eks. bReloaded=true så kan du tjekke, om bReloaded==true inden du reloader.
31. januar 2008 - 17:57
#72
Kan du vise et eks. i koden? Men det ændre så ikke på at FF ikke kan se mit iframe.
31. januar 2008 - 18:36
#73
onmouseover="parent.document.iframe1.location.href='data.asp?status=1&scroll=true';" skal være: onmouseover="if(bReloaded){bReloaded=true;parent.document.iframe1.location.href='data.asp?status=1&scroll=true'}" og så skal: var scrolldelay=null; være: var scrolldelay=null,bReloaded=false;
31. januar 2008 - 18:36
#74
Det med FF og iframet kan jeg nok ikke hjælpe med, medmindre jeg har mulighed for at prøve siden.
31. januar 2008 - 19:04
#75
Ok fint. nu er siden bare ikke online endnu. men burde det så ikke kunne skrives noget i stil med det her? function pageScroll(){ parent.document.getElementById("top.mainFrame.iframe1").contentWindow.scrollBy(0,+3); scrolldelay=setTimeout("pageScroll()",0); }
31. januar 2008 - 19:15
#76
Nej, for getElementById() leder efter id'et, og intet element har id'et "top.mainFrame.iframe1". Du kan måske prøve med: function pageScroll(){ top.mainFrame.getElementById("iframe1").contentWindow.scrollBy(0,+3); scrolldelay=window.setTimeout("pageScroll()",1); }
31. januar 2008 - 21:49
#77
Med var scrolldelay=null,bReloaded=false; henter den ikke siden der skal scrolles. :(
31. januar 2008 - 22:09
#78
onmouseover="if(bReloaded){bReloaded=true;parent.document.iframe1.location.href='data.asp?status=1&scroll=true'}" skulle være: onmouseover="if(!bReloaded){bReloaded=true;parent.document.iframe1.location.href='data.asp?status=1&scroll=true'}" wups =)
31. januar 2008 - 22:24
#79
Jo det virkede.:-) Skridt for skridt kommer det nærmere. Se, ved onmouseout har jeg en timeout på 5 sek. men denne må jo kun køres hvis det er onmouseout på begge knapper, så den ikke afvikles i mens man f.eks er ved at scrolle op.
31. januar 2008 - 22:24
#80
How glemte koden. function endScroll(){ setTimeout("parent.document.iframe1.location.href='data.asp?status=0&scroll=false';",5000); }
31. januar 2008 - 23:02
#81
Ok. jeg fik det løst med Clear.Timeout(t) på begge knapper.:) Så er det sidste spørgsmål hvorfor det ikke virker i FF. det ser ud til at problemet er onmouseover funktionen den ikke reagerer på, burde det ikke virke i FF?
31. januar 2008 - 23:43
#82
så skal du nok rette alle steder, hvor der står parent.document.iframe1 til top.mainFrame.getElementById("iframe1") hvis det var det, der virkede før.
31. januar 2008 - 23:52
#83
Altså min onmousedown virker i FF, men ikke min onmouseover som skal loade scrollsiden.
01. februar 2008 - 09:46
#84
Ja, den kører jo PageScroll() som bruger top.mainFrame.getElementById("iframe1")
01. februar 2008 - 11:09
#85
Det er den her FF ikke vil loade: onmouseover="if(!bReloaded){bReloaded=true;parent.document.iframe1.location.href='data.asp?status=1&scroll=true'}"
01. februar 2008 - 13:08
#86
Jep. onmouseover="if(!bReloaded){bReloaded=true;top.mainFrame.getElementById("iframe1").location.href='data.asp?status=1&scroll=true'}"
01. februar 2008 - 14:27
#87
Yes. nu virker det.:) Men hvis jeg åbner siden i et nyt vindue(popup) virker "top.mainFrame" naturligvis ikke, men hvad vil koden så være?
01. februar 2008 - 15:18
#88
opener.mainFrame, tror jeg
01. februar 2008 - 15:50
#89
Nææh har så forsøgt med opener.mainFrame og opener.parent.mainFrame - uden held :(
01. februar 2008 - 15:53
#90
Hvor åbnes popup'en fra? Hvilket frame?
01. februar 2008 - 16:23
#91
popup'en åbnes fra min mainFrame. Men skal popup navnet evt. indgå i: onmouseover="if(!bReloaded){bReloaded=true;parentdocument.popup.getElementById("iframe1").location.href='data.asp?status=1&scroll=true'}"
01. februar 2008 - 21:08
#92
Nej, det skal så bare være: onmouseover="if(!bReloaded){bReloaded=true;parent.getElementById("iframe1").location.href='data.asp?status=1&scroll=true'}"
01. februar 2008 - 21:45
#93
Fint.:-) Så virker alt det her scroll, men en dum lille fejl, ved ikke om man kan gøre noget ved det, men hvis man klikker på scroll og kommer til at flytte musen en smule går der total ged i scrollen og stopper ikke igen. En eller anden ide til dette problem?
01. februar 2008 - 21:52
#94
Måske hvis du retter: onmouseup="stopScroll()" til: onmouseup="stopScroll()" onmouseout="stopScroll()" Ellers har jeg ingen idéer. =/
01. februar 2008 - 22:00
#95
Nej det er jo når man holder musen nede(onmousedown) og kommer til at trække musen en lille smule, fejlen opstår. Eller kan ma måske undgå at scroll.gif markeres og dermed undgå at trække det?
01. februar 2008 - 22:08
#96
Derfor skal den stoppe scroll, når musen forsvinder. Prøv med onmouseout, som jeg foreslog. =)
01. februar 2008 - 22:30
#97
Jo. det løser faktisk problemet. Perfekt.:^) Den der med popup i FF, der var jeg lige en tand for hurtig, det virker ikke alene med parent.:(
01. februar 2008 - 22:35
#98
I hvilket tilfælde virker det ikke, siger du?
01. februar 2008 - 22:46
#99
Ved popup i FF - virker mine scrollknapper ikke. I IE virker alt.
01. februar 2008 - 23:15
#100
Ok.. Hmm. Det har jeg umiddelbart ingen forklaring på.
01. februar 2008 - 23:56
#101
Ok. jeg prøver mig lidt frem. Men tusinde tak for hjælpen. Point :^)
02. februar 2008 - 00:01
#102
Takker! =)
Vi tilbyder markedets bedste kurser inden for webudvikling