Hes: Javascript Scrollbar

Hallo,

ich brauche Hilfe. Bitte, bitte. Ich sitze krank im Arbeitszimmer an Silvester und hab' immernoch keine Lösung für die Abgabe am 2. Januar.

Meine JavaScript Kenntnisse sind begrenzt, daher habe ich mir aus dem Netz ein Script gefischt, um eins meiner DIVs mit eigener Scrollbar scrollen zu können. Nun mein Problem: Man kann mein DIV praktisch vollkommen aus dem Sichtbereich scrollen. Gibt es eine Möglichkeit, eine Stoppmarke einzubauen? Nach dem Motto: Scrolle maximal so lange, bis Anker "Stop" 200px vom oberen Browserrand entfernt ist. Ist das machbar?

Es handelt sich um Fließtext, d.h. ich kann nicht bestimmen, wie hoch das DIV ist / sein wird.

Wenn mir jemand helfen könnte, dann wär das ein wirklich guter Start ins neue Jahr =0)

Guten Rutsch an alle - Hes

und Dank an die Helden, die hier immer wieder im Forum ehrenamtlich Helfen

-  -  -  -  -  -  -

Hier das Script, das ich benutze:

Ausgelagerter Scriptteil:

function init(){
 if(navigator.appName=="Netscape"){var w=innerWidth;document.test.left=0}
else{var w=document.body.offsetWidth;test.style.left=0}}
 var n = (document.layers) ? 1:0;var ie = (document.all) ? 1:0;var loop, timer1, timer2;function makeObj(obj,nest){
 nest=(!nest) ? '':'document.'+nest+'.'
 this.css=(n) ? eval(nest+'document.'+obj):eval(obj+'.style')
 this.up=goUp
 this.down=goDown
 this.obj = obj + "Object"
 eval(this.obj + "=this")
 return this}
function goDown(speed){
 clearTimeout(timer1);clearTimeout(timer2)
 this.css.top=parseInt(this.css.top)+3
 if(loop) timer1=setTimeout(this.obj+".down("+speed+")",speed)}
function goUp(speed){
 clearTimeout(timer2);clearTimeout(timer1)
 this.css.top=parseInt(this.css.top)-3
 if(loop) timer2=setTimeout(this.obj+".up("+speed+")",speed)}
function init1(){ testObj=makeObj('test2','test');init()}
 onload=init1;

-  -  -  -  -  -  -

Scriptteil in meiner PHP Datei (falls jemand JS abgeschaltet hat, kommt er mit Klicken statt mit onMouseOver weiter):

<div class="pfeil1">
<a href="zurueck.php" onmouseover="loop=true; testObj.down(60);window.status='';return true;" onmouseout="loop=false"><img src="../gif/auf.gif"></a>
</div>

<div class="pfeil2">
<a href="vor.php" onmouseover="loop=true; testObj.up(60);window.status='';return true;" onmouseout="loop=false"><img src="../gif/ab.gif"></a>
</div>

  1. Hallo!

    Meine JavaScript Kenntnisse sind begrenzt, daher habe ich mir aus dem Netz ein Script gefischt, um eins meiner DIVs mit eigener Scrollbar scrollen zu können.

    Hmm...Ich kann mir zwar nicht ganz vorstellen, was du meinst, aber du könntest das Problem vielleicht auch über overflow:scroll lösen. Das kannst du auch einem DIV zuweisen. Dann hat es eine eigene Scrollbar und du kannst scrollen.
    Passt eigentlich auf deine Beschreibung :-)

    Und aus deiner JavaScript-Funktion werde ich nicht schlau. Der Code ist nicht formatiert, hat kein Syntaxhighlighting und hat auch keine Kommentare. Um selber den Sinn des Codes herauszufinden, habe ich zu wenig Zeit/Lust, da es gleich essen gibt :)
    Ich hoffe ich konnt dir trotzdem helfen ;)

    ciao, ww

    1. Danke für Deinen Hilfe Versuch und guten Hunger. Leider kommen die Browser Scrollbars nicht in Frage. Es soll mittels eigener Grafiken gescrollt werden.

      Frohes Neues - Natalie

  2. Hallo Hes,

    ich brauche Hilfe. Bitte, bitte. Ich sitze krank im Arbeitszimmer an Silvester und hab' immernoch keine Lösung für die Abgabe am 2. Januar.

    Ich wünsch dir auf jeden Fall schon mal gute/n/s Besserung, Rutsch und Gelingen!

    Ich fürchte nur, das Skript, das du da ausgegraben hast, ist total veraltet und überdies zum Scrollen eines DIV-Elements total unbrauchbar.

    Meine JavaScript Kenntnisse sind begrenzt, daher habe ich mir aus dem Netz ein Script gefischt, um eins meiner DIVs mit eigener Scrollbar scrollen zu können.

    Das Skript sieht aber eher nach Scrollen ohne Scrollbar aus, stattdessen mit Pfeilen, willst du das?

    Für Iframes habe ich da mal eine Studie gemacht:

    http://sprachlernspiele.de/scroll/

    Mit einem absolut positionierten Div, dessen style.top- und style.left-Werte man innerhalb eines anderen relativ-positionierten Block-Elternelements manipuliert, das seinerseits die Eigenschaft overflow:hidden hat, müsste es auch gehen.

    Nun mein Problem: Man kann mein DIV praktisch vollkommen aus dem Sichtbereich scrollen. Gibt es eine Möglichkeit, eine Stoppmarke einzubauen? Nach dem Motto: Scrolle maximal so lange, bis Anker "Stop" 200px vom oberen Browserrand entfernt ist. Ist das machbar?

    Klar, du musst halt den Wert für Top nicht nur setzen, sondern auch auslesen und wenn dieser 200 unterschreitet keine weitere Reduktion des Top-Wertes deines zu "scrollenden" Divs mehr zulassen. Eine ähnliche Begrenzungsregel könntest du durch Berücksichtigung der eigenen offsetHeight bei Subtraktion der Höhe des die Höhe begerenzenden Elternelements für das Unterbinden weiteren Scrollens nach unten formulieren.

    Gruß Gernot

    1. Hallo,

      ja, war schlecht ausgedrückt. Es geht nicht um eine Scrollbar, wie sie vom Browser zur Verfügung gestellt wird, sondern um das Scrollen mit eigenen Pfeilen.

      Ich hatte auch vorher eine iFrame Lösung, bei der ich einfach verboten habe, die Scrollbar anzuzeigen, aber leider geriet die in einigen Browsern mit meinem Ausklappmenü in Konflikt, so daß ich sie verwerfen mußte.

      Mal 'ne ganz direkte Frage, wenn mein Kumpel das nicht auf schafft, kann man dann Dir eine kleine Prämie anbieten und Du löst mein Problem?

      Frohes Neues - Hes