Avatar billede artery_graphics Nybegynder
28. november 2001 - 09:32 Der er 12 kommentarer og
1 løsning

Scroll siden til højre m. onLoad?

Jeg er ved at lave en side, men jeg mangler et lille script...

Jeg vil gerne have at siden scroller helt til højre når man kommer ind på den, men det skal ikke gå for stærkt - man skulle gerne kunne se hvad der er på siden mens man scroller. Det ville være rart hvis man kunne regulere hastigheden...

Skal helst virke i de forskellige browsere...

Er dette noget der kan komme til at virke? Og hvordan vil det se ud som et samlet script?


var scrollPos = 0;
var scrollEnd = 500;
function startScrolling(){
if(scrollEnd>scrollPos){
scrollPos = scrollPos + 10
window.scrollTo(scrollPos,0)
setTimeout(\'startScrolling()\',50)
}
}

husk at kalde funktionen i din body onload
Avatar billede jakoba Nybegynder
28. november 2001 - 12:10 #1
Ja det skulle virke:

<script type=\'text/javascript\'> <!--

var scrollPos = 0;    // hvor siden starter med at stå (altid 0)
var scrollEnd = 500;  // hvorlangt der nu skal scrolles ialt

function startScrolling() {
    if(scrollEnd>scrollPos) {
        scrollPos = scrollPos + 10;        // 10 pixel tilhøjre for her
        window.scrollTo(scrollPos,0);      // scroll derhen
        setTimeout(\'startScrolling()\',50); // kald igen om 50 millisekunder
    } //endif
}; //end startscrolling()

</script>

i din body kommando tilføjer du en onload= handeler:
    <body ... onload=\"startScrolling()\">

mvh JakobA
Avatar billede artery_graphics Nybegynder
28. november 2001 - 14:03 #2
Ja.. TAK! Jeg fik det faktisk selv til at virke ret godt ... MEN, der er stadig et problem..

Scriptet scroller fint til højre, men det bliver det ved med...
Det jeg har brug for e, at når siden er scrollet helt til højre, så stopper scriptet med at virke. Ellers har jeg ikke mulighed for at scrolle til venstre igen - da det hele tiden vil srolle mod højre...

Der gives gerne ekstra point, da det er liv eller død om dette kommer til at virke :)
Avatar billede jakoba Nybegynder
28. november 2001 - 14:13 #3
I IE kan det gøres ret nemt med en onscroll event i body:

<script type=\'text/javascript\'> <!--

var scrollPos = 0;    // hvor siden starter med at stå (altid 0)
var scrollEnd = 500;  // hvorlangt der nu skal scrolles ialt
var justLoaded = true;

function startScrolling() {
    if( justLoadet && scrollEnd>scrollPos ) {
        scrollPos = scrollPos + 10;        // 10 pixel tilhøjre for her
        window.scrollTo(scrollPos,0);      // scroll derhen
        setTimeout(\'startScrolling()\',50); // kald igen om 50 millisekunder
    } //endif
}; //end startscrolling()

</script>

i din body kommando tilføjer du en onload= handeler:
    <body ... onload=\"startScrolling()\" onscroll=\"justLoadet=false\">

så bil brugeren stoppe scriptet det øjeblik han hiver i en scrollbar.

men den onscrollhandler kan jeg ikke hitte i Netscape 4.7 så det er ikke en ordentlig løsning.

mvh JakobA
Avatar billede jakoba Nybegynder
28. november 2001 - 14:15 #4
Ups. jeg har stavet variablen justLoadet forskelliget afslut med d alle steder:
    if( justLoaded && scrollEnd>scrollPos ) {
og
    <body ... onload=\"startScrolling()\" onscroll=\"justLoaded=false\">

Avatar billede artery_graphics Nybegynder
28. november 2001 - 14:19 #5
Det skal faktisk kunne virker i alle browsere (muligvis på nær Netscape 4.x) da det skal bruges til en offentlig hjemmeside
Avatar billede jakoba Nybegynder
28. november 2001 - 14:36 #6
Prøv evt at udvide med et par ekstra linier:

function startScrolling() {
                    // 2 nye linier herunder
    var minPosition = window.pageXOffset || document.body.scrollLeft;
    if ( Math.abs( scrollPos-minPosition ) > 4 ) return;

    if( justLoadet && scrollEnd>scrollPos ) {
        scrollPos = scrollPos + 10;        // 10 pixel tilhøjre for her
        window.scrollTo(scrollPos,0);      // scroll derhen
        setTimeout(\'startScrolling()\',50); // kald igen om 50 millisekunder
    } //endif
}; //end startscrolling()

Det er teori, men den burde virke på alle NS og IE (og vist opgså Opera) browsere.

mvh JakobA
Avatar billede artery_graphics Nybegynder
28. november 2001 - 15:15 #7
Der er et problem. Den scroller et lille hak og så går den i stå - der fremkommer ingen fejl på siden !?!


Scriptet ser sådan ud lige nu:

<script type=\'text/javascript\'>

function startScrolling() {
var scrollPos = 0;    // hvor siden starter med at stå (altid 0)
var scrollEnd = 500;  // hvorlangt der nu skal scrolles ialt
var justLoaded = true;               
var minPosition = window.pageXOffset || document.body.scrollLeft;

    if ( Math.abs( scrollPos-minPosition ) > 4 ) return;

    if( justLoaded && scrollEnd>scrollPos ) {
        scrollPos = scrollPos + 10;        // 10 pixel tilhøjre for her
        window.scrollTo(scrollPos,0);      // scroll derhen
        setTimeout(\'startScrolling()\',50); // kald igen om 50 millisekunder
    } //endif
}; //end startscrolling()

</script>

Nuværende body:

onload=\"startScrolling();parent.billede.location.href=\'../navigation/blank.asp\'\" onscroll=\"justLoaded=false\"
Avatar billede jakoba Nybegynder
28. november 2001 - 15:23 #8
de 3 variable
var scrollPos = 0;    // hvor siden starter med at stå (altid 0)
var scrollEnd = 500;  // hvorlangt der nu skal scrolles ialt
var justLoaded = true; 

må absolut ikke stå indeni funktionen. de skal stå oppe foran.
den fjerde skal så indeni som den gør.

mvh JakobA
           
Avatar billede artery_graphics Nybegynder
28. november 2001 - 15:39 #9
Ingen ændring ...

<script type=\'text/javascript\'>

var scrollPos = 0;    // hvor siden starter med at stå (altid 0)
var scrollEnd = 500;  // hvorlangt der nu skal scrolles ialt
var justLoaded = true; 

function startScrolling() {
var minPosition = window.pageXOffset || document.body.scrollLeft;

    if ( Math.abs( scrollPos-minPosition ) > 4 ) return;

    if( justLoaded && scrollEnd>scrollPos ) {
        scrollPos = scrollPos + 10;        // 10 pixel tilhøjre for her
        window.scrollTo(scrollPos,0);      // scroll derhen
        setTimeout(\'startScrolling()\',50); // kald igen om 50 millisekunder
    } //endif
}; //end startscrolling()

</script>
Avatar billede jakoba Nybegynder
28. november 2001 - 16:30 #10
Jep, det ser ud til at scrollTo trigger IE\'s onscroll handler. Det var ikke meningen :)
Men siden nedenfor ser ud til at virke i NS og IE:
http://www.jakoba.dk/eksperten/exp139515.html

mvh JakobA
Avatar billede artery_graphics Nybegynder
28. november 2001 - 16:38 #11
Tak for svaret. Men vi, undertegnede og Tejs, der sammen arbejde på siden - kender problemet med ovenstående script: Der virker ikke på MAC og i browseren Opera.

Det er som sagt yderst vigtigt, at det virker de fleste steder .. især på MAC

Der refereres til : http://www.eksperten.dk/spm/137424
Avatar billede jakoba Nybegynder
28. november 2001 - 17:19 #12
kik lige i sourcen. det er samme forgrund der scroller, men scriptet er er helt andet.

Men det betyder godt nok ikke at jeg tør love det virker andre steder end der jeg kan teste :-))
Avatar billede artery_graphics Nybegynder
28. november 2001 - 17:43 #13
Du er sgu\' genial! Nu virker det perfekt i alle browsere IE6 NS4.x NS6 Opera.. mangler kun at teste det på en MAC.

Tusind tak for hjælpen .. du skal få denne endelige URL, når siden er færdig...

Der er 10 point i bonus
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
Kurser inden for grundlæggende programmering

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