Delta3st: JavaScript Scrollbar

Hallo,

habe mir ein script runtergeladen welches den Scrollbar ablöst, indem es einfach den Kontent in ein Layer reinkopiert, in welchem man scrollen kann!

Mein Problem:

Es muss ein Fehler in dem SCript sein da es nur nach oben scrollt und nicht wieder runter könnt ihr mir helfen?

Hier das Script:

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">

<!-- Begin
function verScroll(dir, spd, loop) {
loop = true;
direction = "dn";
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") {
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);
   }
}
function stopScroll() {
loop = false;
clearTimeout(scrolltimer);
}
//  End -->
</script>
</head>
<body>
<div id="contentLayer" style="position:absolute; width:463px; z-index:1; left: 39px; top: 51px; height: 229px;">

TEXT TEXT TEXT TEXT TEXT

</div>
<div id="scrollmenu" style="position:absolute;width:200px;height:30px;z-index:1; left:623px; top: 364px">
<table border=1><tr><td>
<table>
<tr>
<td align=left>Up</td>
<td> </td>
<td align=right>Down</td>
</tr>
<tr>
<td colspan=3>
<a href="#" onMouseOver="verScroll('up','25','true')" onMouseOut="stopScroll()"><<<</a>
<a href="#" onMouseOver="verScroll('up','5','true')" onMouseOut="stopScroll()"><<</a>
<a href="#" onMouseOver="verScroll('up','1','true')" onMouseOut="stopScroll()"><</a> |
<a href="#" onMouseOver="verScroll('dn','1','true')" onMouseOut="stopScroll()">></a>
<a href="#" onMouseOver="verScroll('dn','5','true')" onMouseOut="stopScroll()">>></a>
<a href="#" onMouseOver="verScroll('dn','25','true')" onMouseOut="stopScroll()">>>></a>
</td>
</tr>
</table>
</td></tr></table>
</div>
</body>
</html>

Schonmal danke im vorraus!

  1. Hallo Delta3st,

    vielleicht ist der Fehler gar nicht im Skript, sondern im HTML:

    <a href="#" onMouseOver="verScroll('up','25','true')" onMouseOut="stopScroll()"><<<</a>
    <a href="#" onMouseOver="verScroll('up','5','true')" onMouseOut="stopScroll()"><<</a>
    <a href="#" onMouseOver="verScroll('up','1','true')" onMouseOut="stopScroll()"><</a> |
    <a href="#" onMouseOver="verScroll('dn','1','true')" onMouseOut="stopScroll()">></a>
    <a href="#" onMouseOver="verScroll('dn','5','true')" onMouseOut="stopScroll()">>></a>
    <a href="#" onMouseOver="verScroll('dn','25','true')" onMouseOut="stopScroll()">>>></a>

    Versuch doch mal, die Kleiner- und Größer-Zeichen < und > in den Schaltern zu maskieren mit &lt; und &gt; ! (Nur so eine Idee!)

    Interessantes Skript, wo hast du das her? Ich arbeite gerade an einem ähnlichen Problem.

    Gruß Gernot

    1. Hallo Gernot,

      Habe ich schon probiert aber hat nicht funktoiniert scrollt immer noch nur nach oben und dass komische ist wenn man weit genug nach oben gescrollt hat scrollt er wieder nach unten aber nicht ganz nach unten, sondern nur bis zu einer bestimmtenstelle!

      Das script habe ich von :  http://javascript.internet.com

      1. Hallo Delta3st,

        mit dem Skript ist alles in Ordnung, ich habe es in vier verschiedenen Browsertypen getestet. Gib einfach mal mehr Text ein. Dass der Text dann nur so weit nach unten scrollt, bis die oberste Zeile lesbar ist, ist ja im Sinne des Erfinders, warum sollte er auch ganz aus dem Blickfeld scrollen?

        Wenn du das aber möchtest, worin ich zwar keinen Sinn sehe, dann schreibe doch einfach statt folgender Zeile im Quellcode:

        if (direction == "up" && y_pos < 10) {

        nur folgendes:

        if (direction == "up") {

        Dann scrollt die Chose auch weiter runter als bis zu dem Punkt, wo die oberste Zeile einen Abstand von 10 Pixeln zum oberen Rand des Browserfensters hat.

        Das script habe ich von :  http://javascript.internet.com

        Das habe ich dort nicht gefunden, vielleicht habe ich die falschen Suchbegriffe eingegeben. Ich würde nämlich Teile dieses Skripts gerne für mein eigenes Projekt verwenden, aber ich denke, dann sollte man das auch zumindest im Quellcode entsprechend würdigen. Es wäre deshalb nett, wenn du mir die Quelle noch genauer nennen könntest, ich will mich ja später nicht mit fremden Lorbeeren schmücken.

        Gruß Gernot

        1. Hallo Gernot,

          Hier mal die ganze URL:

          http://javascript.internet.com/scrolls/layer-scroller.html

          Jetzt geht es zwar besser doch will ich eigentlich ein layer mit Overflow also das der text nur in einem bestimmten Fenster scrollt und nicht über die ganze seite!

          1. Hallo Delta3st,

            Jetzt geht es zwar besser doch will ich eigentlich ein layer mit Overflow also das der text nur in einem bestimmten Fenster scrollt und nicht über die ganze seite!

            Also an deiner Stelle würde ich da ja lieber mit einem Innerframe arbeiten, den du auf eine bestimmte Höhe und Breite setzt und bei dem du das Scrolling dann auch ausschalten kannst.

            Das Scrolling kannst du dann mit deinen JavaScript-Schaltknöpfen ersetzen, aber nicht, indem du wie in dem vorliegenden Skript das Scrolling nur mit der absoluten Position eines Layers imitierst, (für ein Fenster müsstest du dann ja noch Abdecklayer drüber legen), sondern indem du es dirkt mit pageYOffset (Für alle gängigen Browser inkl. Opera aber nicht MSIE) bzw. document.body.scrollTop (für MSIE und Opera) ansprichst.

            http://de.selfhtml.org/javascript/objekte/window.htm#page_y_offset

            Gruß Gernot