29. oktober 2002 - 13:09Der er
26 kommentarer og 1 løsning
Scroll mod højre
Er der nogen der ligger inde med et script der kan scrolle indholdet af en side fra venstre mod højre ved onload?
Jeg har en menu i en frame. Klikkes et menupunkt hentes en side ind i en modstående frame, med menupunkter: 1 2 3 4 5 6 7 8 9 Jeg vil gerne kunne få disse talmenupunkter til at scrolle ind som én lang stråd i selve den modstående frame fra venstre mod højre.
Men dette script virker perfekt i alle browsere + mac, dog ikke NS 4.7 men den kan jeg godt udelukke. Det er vigtigt at virker i IE, NS6 eller 7 og mac..
Problemet er bare at dette script skal srcolle den modsatte vej. Kan det overhovedet lade sig gøre?
<HTML> <HEAD>
<SCRIPT language=JavaScript1.2> <!-- //>
var scrollPos = 0; // hvor siden starter med at stå (altid 0) var scrollEnd = 2000; // hvorlangt der nu skal scrolles ialt var justLoaded = true;
function startScrolling() { if ( typeof(self.pageXOffset) != 'undefined' ) { var minPosition = self.pageXOffset } else { var minPosition = 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()',10); // kald igen om 60 millisekunder } //endif }; //end startscrolling()
Det store problem ligger i, at vi ikke ved, hvor bred siden er. Ellers ville resten sådan set være nemt nok. Hvis du har en fast bredde på siden, ville det derfor være behjælpeligt!
Vil det ikke kunne justeres på plads efterfølgende på samme måde som jeg pt. kan med: var scrollEnd = 2000; og width="2000" ?
Jeg kunne da iøvrigt også godt selv bestemme bredden på dit eget script, (nedenstående). Hvis det skal kører i en frame kan scrollbars vel slås fra og siden senere rettes til i forhold til framestørrelsen?
Altså kan det ikke styres på denne måde, uden at du ved den faste bredde? var scrollEnd = 2000; og width="2000" ?
Synes godt om
Slettet bruger
30. oktober 2002 - 16:05#11
Jo måske:
<SCRIPT language=JavaScript1.2> <!-- //>
var scrollPos = 2000; // hvor siden starter med at stå var scrollEnd = 0; // hvorlangt der nu skal scrolles ialt var justLoaded = true;
function startScrolling() { if ( typeof(self.pageXOffset) != 'undefined' ) { var minPosition = self.pageXOffset } else { var minPosition = document.body.scrollLeft; } if ( Math.abs( scrollPos-minPosition ) > 4 ) return; //Hvis det ikke virker, så prøv at slette denne linje
if( justLoaded && scrollPos > scrollEnd) { scrollPos = scrollPos - 10; // 10 pixel tilhøjre for her window.scrollTo(scrollPos,0); // scroll derhen setTimeout(startScrolling,10); // kald igen om 60 millisekunder } //endif }; //end startscrolling()
var scrollPos = 2000; // hvor siden starter med at stå var scrollEnd = 0; // hvorlangt der nu skal scrolles ialt var justLoaded = true;
function startScrolling() { if ( typeof(self.pageXOffset) != 'undefined' ) { var minPosition = self.pageXOffset } else { var minPosition = document.body.scrollLeft; } if ( Math.abs( scrollPos-minPosition ) > 4 ) return; //Hvis det ikke virker, så prøv at slette denne linje
if( justLoaded && scrollPos > scrollEnd) { scrollPos = scrollPos - 10; // 10 pixel tilhøjre for her window.scrollTo(scrollPos,0); // scroll derhen setTimeout(startScrolling,10); // kald igen om 60 millisekunder } //endif }; //end startscrolling()
Hmm.. ja det kører rigtigt godt her. Både i IE, NS 7.0 og NS 4.7 og Opera. Men min ven der har testet det på Mac (IE 5), siger at han intet når at opfatte, så hurtigt scroller siden ind. Her er der en lille kunstpause før den blødt scroller sidens indhold fra venstre mod højre.
Som sagt kan jeg intet gøre med mac. Jeg bruger aldrig selv mac, og har derfor næsten ingen erfaring med sådan noget. Så her skal du nok have fat i en anden. Men for sjovs skyld kan du jo prøve følgende:
<SCRIPT> <!-- //>
var scrollPos = 2000; // hvor siden starter med at stå var scrollEnd = 0; // hvorlangt der nu skal scrolles ialt var justLoaded = true;
function startScrolling() { if ( typeof(self.pageXOffset) != 'undefined' ) { var minPosition = self.pageXOffset } else { var minPosition = document.body.scrollLeft; }
if( justLoaded && scrollPos > scrollEnd) { scrollPos = scrollPos - 10; // 10 pixel tilhøjre for her window.scrollTo(scrollPos,0); // scroll derhen setTimeout(startScrolling,100); // kald igen om 60 millisekunder } //endif }; //end startscrolling()
// --> </SCRIPT>
Synes godt om
Slettet bruger
30. oktober 2002 - 16:39#20
Så er det nok timeout'en, den er gal med! Juster den her:
setTimeout(startScrolling,100); // kald igen om 100 millisekunder
Den kan måske ha' noget med skærmopløsning på mac'en at gøre. Hvis opløsning er 1600 x 1200 vil siden jo ikke skulle scrolle nær så meget som, hvis opløsningen er 1024 x 768. Dette vil ko så gøre en markant hastighedsforskel.
Er det timeout der gør at der går X antal sekunder før den begynder at scrolle? Det er irreterende. Jeg har forsøgt at justerer den timeout, men den gør ingen forskel, heller ikke hvis sat til 0. Sættes den derimod til 100 scroller den ekstrem langsomt.
Jeg har rettet en del i dit script. Satte det i forhold til JakobA's (øverste link) og så kom det til at se sådan her ud. Det var løsningen. Nu virker det perfekt i samtlige browsere også på mac.
<HTML> <HEAD>
<SCRIPT language=JavaScript1.2> <!-- //>
var scrollPos = 2000; // hvor siden starter med at stå var scrollEnd = 0; // hvorlangt der nu skal scrolles ialt var justLoaded = true;
function startScrolling() { if ( typeof(self.pageXOffset) != 'undefined' ) { var minPosition = self.pageXOffset } else { var minPosition = document.body.scrollLeft; } if ( Math.abs( scrollPos-minPosition ) > 2000 ) return;
if( justLoaded && scrollPos>scrollEnd ) { scrollPos = scrollPos - 10; // 10 pixel tilhøjre for her window.scrollTo(scrollPos,0); // scroll derhen setTimeout('startScrolling()',0); // kald igen om 60 millisekunder } //endif }; //end startscrolling()
Nej, timeouten er tiden, der går, mellem hver gang startScrolling kaldes. Så for hvert lille ryk går der altså et antal millisekunder. Hvis du sætter det til nul, kan du nok se, at hvis man kører scriptet på en ekstremt hurtig computer, så vil det foregå alt for hurtigt. Brug 60 i stedet!
Synes godt om
Slettet bruger
31. oktober 2002 - 16:57#26
Ventetiden i starten skyldes, at siden lige skal loades, før processen kan gå i gang!
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.