Avatar billede artery_graphics Nybegynder
29. oktober 2002 - 13:09 Der 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.

Noget ala denne, bare den modsatte vej:
http://www.jakoba.dk/eksperten/exp139515.html

Mvh. Lars
Avatar billede Slettet bruger
29. oktober 2002 - 18:17 #1
Hvis det skal fungere den modsatte vej, kan du jo prøve:

<script>
function rul() {
if (document.body.scrollLeft > 0) {
self.scrollBy(-10, 0);
setTimeout(rul, 50);
}
}
</script>

<body onLoad="self.scrollTo(999999, 0); rul();">
Avatar billede artery_graphics Nybegynder
29. oktober 2002 - 18:29 #2
Ja det virker faktisk.
Kan det på nogen måde også komme til at virke
i den gamle NS 4.x (4.7) ?

Hvad er den store forskel på dit meget simple script og
JakobA's, der stort set gør det samme?
Avatar billede artery_graphics Nybegynder
29. oktober 2002 - 18:31 #3
Kan man på samme både lave et script
der scoller indholdet af side ind fra
top mod bund, ved onload?
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 12:59 #4
=> Der er et problem med dit script i IE 5.0 på MAC.
Ingen bevægelse overhovedet.
Avatar billede Slettet bruger
30. oktober 2002 - 14:33 #5
Mit vil kun virke i IE4+. Og sikkert ikke på mac. Hvis du vil have noget crossbrowser, skal du nok ikke gå efter sådan en effekt!
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 14:58 #6
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()

// --> </SCRIPT>
</HEAD>

<BODY bgColor=#ffffff leftMargin=0 topMargin=10 marginheight="0" marginwidth="0" onload=startScrolling();>

<table border="1" cellspacing="0" cellpadding="0" width="2000">
  <tr>
    <td width="100%">
    <p align="right">1 2 3 4 5 6 7 8 9</td>
  </tr>
</table>

</body>
</html>
Avatar billede Slettet bruger
30. oktober 2002 - 15:31 #7
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!
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 15:41 #8
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?

<html>
<head>
<script>
function rul() {
if (document.body.scrollLeft > 0) {
self.scrollBy(-10, 0);
setTimeout(rul, 50);
}
}
</script>
</head>
<body onLoad="self.scrollTo(999999, 0); rul();">

<table border="1" cellspacing="0" cellpadding="0" width="2000">
  <tr>
    <td width="100%">1 2 3 4 5 6 7 8 9</td>
  </tr>
</table>

</body>
</html>

Ellers vil jeg meget gerne ha' lov at vende tilbage til det, når jeg har den faste bredde. Hvis det er okay med dig.
Avatar billede Slettet bruger
30. oktober 2002 - 15:56 #9
Det er helt fint!
Jeg tror ikke, mac forstår window.scrollBy.
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 16:01 #10
Altså kan det ikke styres på denne måde, uden at du ved den faste bredde?
var scrollEnd = 2000; og width="2000" ?
Avatar billede 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()

// --> </SCRIPT>
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 16:09 #12
Nope.. nu scroller den slet ikke overhovedet...
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 16:10 #13
Den med at sætte minus ind har jeg også selv prøvet.
Avatar billede Slettet bruger
30. oktober 2002 - 16:16 #14
Har du husket at slette linjen?
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 16:19 #15
Er det ikke sådan her du mener det skal se ud?


<HTML>
<HEAD>

<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 ( 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()

// --> </SCRIPT>
</HEAD>

<BODY bgColor=#ffffff leftMargin=0 topMargin=10 marginheight="0" marginwidth="0" onload=startScrolling();>

<table border="1" cellspacing="0" cellpadding="0" width="2000">
  <tr>
    <td width="100%">
    <p align="right">1 2 3 4 5 6 7 8 9</td>
  </tr>
</table>

</body>
</html>
Avatar billede Slettet bruger
30. oktober 2002 - 16:21 #16
Nej, prøv dette:

<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,10); // kald igen om 60 millisekunder
    } //endif
}; //end startscrolling()

// --> </SCRIPT>

<BODY bgColor=#ffffff leftMargin=0 topMargin=10 marginheight="0" marginwidth="0" onload="window.scrollTo(2000, 0); startScrolling();>
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 16:36 #17
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.
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 16:38 #18
Men denne scroller med samme hastighed på både mac og pc...
Hvordan kan det være?
http://www.jakoba.dk/eksperten/exp139515.html
Avatar billede Slettet bruger
30. oktober 2002 - 16:38 #19
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>
Avatar billede 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
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 16:52 #21
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.

Tusind tak for din hjælp i hvert fald.
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 23:12 #22
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.
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 23:41 #23
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()

// --> </SCRIPT>
</head>

<BODY bgColor=#ffffff leftMargin=0 topMargin=10 marginheight="0" marginwidth="0" onload="startScrolling();">
Avatar billede artery_graphics Nybegynder
30. oktober 2002 - 23:52 #24
Kan det også komme til at scrolle fra top til bund?
Se her: http://www.eksperten.dk/spm/277436
Avatar billede Slettet bruger
31. oktober 2002 - 16:57 #25
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!
Avatar billede Slettet bruger
31. oktober 2002 - 16:57 #26
Ventetiden i starten skyldes, at siden lige skal loades, før processen kan gå i gang!
Avatar billede artery_graphics Nybegynder
31. oktober 2002 - 17:03 #27
Okay det giver mening. Mange tak for det.
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