Kai: Scrollen ohne Scrollbar

Hallo!

Hat jemand eine Idee wie ich es realisiere, daß man mit der Maus in einem Dokument hoch und runter scrollen kann, ohne die Scrollbar zu benutzen. Etwa wie in Computerspielen soll das Dokument nach oben oder unten gescrollt werden, wenn der User an den oberen bzw. unteren Fensterrand kommt.

Das HTML-Dokument enthält nur ein Bild das genau die Bildschirmbreite und etwa die doppelte Bildschirmhöhe hat. Das ganze muß im IE4 oder IE5 laufen.

Viele Gruesse
  Kai

  1. Hallo Kai!

    Schau mal auf http://www.muellseite.de/terror.htm.

    Dort ist nebst anderen lustigen JS auch sowas, was Du suchst.

    Die Funktionen "Scrolldn()" und "Scrollup()" dürften dem enstprechen.

    Bis danndann

    PAF (patrickausfrankfurt)

    1. Hallo Patrick!

      Die Funktionen "Scrolldn()" und "Scrollup()" dürften dem enstprechen.

      Das Problem ist aber eigentlich eher, daß ich kein Objekt habe, bei dem man mit einem onMouseover Event diese Funktion ausführen kann, sondern sie abhängig von der Mauszeigerposition aufrufen muß. Das heißt, es muß ständig überwacht werden, ob sich der Zeiger oben oder unten dem Bildschirmrand nährt.

      Viele Grüße
         Kai

      1. Hai Kai,

        Das Problem ist aber eigentlich eher, daß ich kein Objekt habe

        Hast Du nicht? Ich denke ein größeres Objekt, als das Fenster gibt es wohl kaum :-)

        Das heißt, es muß ständig überwacht werden, ob sich der Zeiger oben oder unten dem Bildschirmrand nährt.

        ergo: häng dich in die Mausevents vom window-Objekt und frag dann die Mausposition ab.

        <SCRIPT TYPE="text/javascript"
        LANGUAGE="JavaScript1.1"
        EVENT="onMouseMove" FOR="window">

        var mouseY;
          mouseY=window.event.clientY // oder .y

        if (mouseY >= fensterrand - offset)
              scrollDown()

        if (mouseY <= offset)
              scrollHoch()

        </SCRIPT>

        fensterrand und offset wären die Bereiche, die du noch bestimmen must, z.B. durch screen.availHeight.

        Dieses und mehr über den IE4+ gibtz bei <img src="/selfhtml/xeng.gif" alt="">http://msdn.microsoft.com/workshop/

        Viel Spaß
        CirTap

        1. Hallo CirTap,

          <SCRIPT TYPE="text/javascript"

          »»  LANGUAGE="JavaScript1.1"
          »»  EVENT="onMouseMove" FOR="window">

          var mouseY;
            mouseY=window.event.clientY // oder .y

          if (mouseY >= fensterrand - offset)
                scrollDown()

          if (mouseY <= offset)
                scrollHoch()

          </SCRIPT>

          Ich habe Deinen Script ausprobiert und es tat sich gar nichts, auch nachdem ich ihn nach Studium der betreffenden SELFHTML Seite änderte. Ich habe das Gefühl, daß das Script nicht aufgerufen wird, wenn ich die Maus bewege.

          <SCRIPT for=document event="onMousemove()" language="JScript">
            var=mouseY;
            mouseY=window.event.clientY;
            if (mouseY >= 600)
             window.scrollby(0,10);
            if (mouseY <= 150)
             window.scrollby(0,-10);
          </SCRIPT>

          Viele Grüße
            Kai

          1. Hi Kai,

            Ich habe Deinen Script ausprobiert und es tat sich gar nichts, auch nachdem ich ihn nach Studium der betreffenden SELFHTML Seite änderte. Ich habe das Gefühl, daß das Script nicht aufgerufen wird, wenn ich die Maus bewege.

            Das nicht als funktionsfertiger Script gedacht, sondern nur als Schubs in die Richtung.
            Sorry, wenn das nicht rüberkam.

            »»  <SCRIPT for=document event="onMousemove()" language="JScript">

            var=mouseY;
              mouseY=window.event.clientY;
              if (mouseY >= 600)
               window.scrollby(0,10);
              if (mouseY <= 150)
               window.scrollby(0,-10);

            »»  </SCRIPT>

            Das kann schon dreimal nicht gehen, denn "var=mouseY" schmeißt schon den ersten Fehler und nix ist.
            Laut Doku von MS gibt es zwar ein scrollBy (man beachte "By"), hat aber (nachdem ich es dann halt doch getestet habe <s>) nur Fehler gebracht: scroll(x,y) genügt und funktioniert.

            Das registrieren der Eventroutine ist auch beim IE erforderlich, da window und document keine "HTML-Objekte" sind, ansonsten würde das mit dem EVENT FOR funktionieren (mein Fehler).

            // registrieren (kleinschreibung)
            document.onmousemove = scrollIt;

            function scrollIt(e) {
            var mouseY;
              mouseY=window.event.clientY;
              if (mouseY >= 600)
               window.scroll(0,10); // hier die fnk rein

            if (mouseY <= 150)
               window.scroll(0,-10); // hier die fnk rein
            }

            Das funktioniert jetzt zwar, hat aber keinen besonderen Effekt, da sich die Aufrufe gegenseitig ausschließen. Das Fenster "zuckt" im besten Fall nur kurz - bei mir jedenfalls.
            Ich hab absichtlich die Unterfunktionen scroll*** reingeschrieben, da für das Scrollen eine Schleife erforderlich ist - auch scrollBy() scrollt ja nur einmal.
            Schau nochmal in dem Script auf http://www.muellseite.de/terror.htm in den "Buttons" nach. "parent" ist ja das "window".

            In diesem Sinne:
            Viel Spaß
            CirTap

    2. Hi Patrick!

      Schau mal auf http://www.muellseite.de/terror.htm.

      Hey, die Seite ist cool! Hast Du von denen geklaut oder die von Dir? ;-) Ich muss leider zugeben, dass denen ihre etwas witziger ist als die Halle der Gemeinheiten. Naja, nichts fuer ungut oder wie man da sagt.

      Bye by Roland

      1. Hallo Roland!

        Hey, die Seite ist cool! Hast Du von denen geklaut oder die von Dir? ;-)

        Ich habe andere Skripte benutzt... aber ich gebe zu, daß ich mich einige Anregungen von dieser Seite geholt habe.

        Ich muss leider zugeben, dass denen ihre etwas witziger ist als die Halle der Gemeinheiten.

        Tja, was bereits sehr gut ist, ist nur schwer zu übertreffen, oder? Die "Halle" ist auch anders aufgebaut, da ist eine Steigerung drin. Kommt irgendwann auch noch mehr!

        Bis danndann

        PAF (patrickausfrankfurt)