Avatar billede artery_graphics Nybegynder
21. november 2001 - 10:40 Der er 7 kommentarer og
1 løsning

Stopklods på scrollscript

Kan nogen hjælpe med at tilføje en \'stopklods\' på dette scrollscript?

http://www.arterygraphics.dk/vertikalt.html

Scriptet virker perfekt i alle browsere, men har det ene problem, at det ikke stopper når teksten er scrollet igennem. Hvordan får jeg det til at stoppe ved sidste linie i teksten?
Avatar billede jakoba Nybegynder
21. november 2001 - 11:21 #1
Du kan aflæse hvor højt dit lag er med:

var ditLag      = // dit <div objekt.
var ditLagHøjde = ( ns4 ) ? ditLag.document.height : ditLag.offsetHeight;

med dit script bliver det til:

function verScroll(dir, spd, loop) {
    loop = true;
    direction = \"up\";
    speed = 10;
    scrolltimer = null;
    if (document.layers) {
        var page = eval(document.contentLayer);
    } else {
        if (document.getElementById) {
            var page= eval(\"document.getElementById(\'contentLayer\').style\");
        } else {
            if (document.all) {
                var page = eval(document.all.contentLayer.style);
            }
        }
    }
    direction = dir;
    speed = parseInt(spd);
    var y_pos = parseInt(page.top);
    if (loop == true) {
        if (direction == \"dn\") {  // 5 ny linier nedenunder
            if ( document.layers ) {
                pageMax = page.document.height;
            } else {
                pageMax = page.offsetHeight;
            if ( (y_pos-speed) < -pageMax )  y_pos = speed-pageMax;
            page.top = (y_pos - (speed));
        } else {
            if (direction == \"up\" && y_pos < 10) {
                page.top = (y_pos + (speed));
            } else {
                if (direction == \"top\") {
                    page.top = 10;
                }
            }
        }
        scrolltimer = setTimeout(\"verScroll(direction,speed)\", 1);
    }
}

mvh JakobA
Avatar billede artery_graphics Nybegynder
22. november 2001 - 11:51 #2
Jeg forstår ikke helt hvordan jeg skal placerer dine ændringer i forhold til den originale?
Avatar billede jakoba Nybegynder
22. november 2001 - 12:27 #3
Den eneste egentlige ændring er at jeg har indsat 5 linier. De er markeret med stjerner nedenfor:

    if (loop == true) {
        if (direction == \"dn\") {  // 5 ny linier nedenunder
*            if ( document.layers ) {
*                pageMax = page.document.height;
*            } else {
*                pageMax = page.offsetHeight;
*            if ( (y_pos-speed) < -pageMax )  y_pos = speed-pageMax;
            page.top = (y_pos - (speed));
        } else {

mvh JakobA
Avatar billede artery_graphics Nybegynder
22. november 2001 - 12:37 #4
Syntes bare jeg får scripterror, når jeg indsætter dine ændringer... kan du evt. prøve at vise mig hele sammenhængen med tekst og det hele fra start til slut? Og evt. teste det hvis du gider.

Har du nogen idé om dette kan komme til at fungere med navigation i én frame og selv scrollteksten i en modståenden frame? Der er ekstra point for dette....
Avatar billede jakoba Nybegynder
22. november 2001 - 13:27 #5
her: http://www.jakoba.dk/eksperten/exp136568.html

linksene kan sagtens ligge i en anden ramme. du skal blot sørge for at der adresseres korrekt hen i den ramme hvor scrolleren og scriptet ligger:

<a href=\"#\" onMouseOver=\"parent.rammenavn.verScroll(\'up\',\'5\',\'true\')\" onMouseOut=\"parent.rammenavn.stopScroll()\">

60 p er rigeligt.

mvh JakobA
Avatar billede artery_graphics Nybegynder
22. november 2001 - 14:49 #6
Super fedt. Jeg takker af hjertet for din meget udførlige hjælp.
Avatar billede artery_graphics Nybegynder
22. november 2001 - 21:45 #7
Jeg glemte en vigtig detalje. Teksten der skal bruges i scrollscriptet, trækkes ind fra en database, derfor kan jeg ikke angive en fast størrelse med dette parameter:

if ( document.layers ) {
        var page = elem;                      // page er objektets style
        var pageMax = elem.document.height -50;  // pagemax er højden
    } else {
        var page = elem.style;
        var pageMax = elem.offsetHeight -50;
    }

Er det ikke muligt, at angive max højden på scriptet ud fra den sidste linie i den tekst der trækkes ind?

Eller noget tilsvarende. Et eller andet der gør, at scriptet kan justerer sit scrollareal efter teksten og ikke omvendt.

Der gives gerne pointbonus for dette...
Avatar billede jakoba Nybegynder
25. november 2001 - 22:12 #8
Jeg satte de  -50  ind for at sikre at de nederste par liner tekst forblev synlige når scrollet ramte bunden af teksten. Du kan også godt skrive -0 (eller bare kvitte det.
Og det er den eneste konstant der er.  elem.document.height  og  elem.offsetHeight  justerer sig efter hvad tekst du fylder ind.

du kan justere det areal i scrollet der vises med noget clipping som fx her:
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp97171.html
men jeg er lidt usikker på om det er det du mener.

tak for pts.
mvh JakobA
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