Perro: Nach oben scrollen

Guten Morgen

Ich möchte Folgendes in meiner Seite implementieren: Wenn man mit der Maus in den oberen Bereich (z.b. die oberen 50px)der Seite fährt soll die Seite langsam nach oben scrollen bis man entweder ganz oben ist oder den Bereich mit der Maus wieder verlässt.

mein erster Versuch:

function mauspos(){

if(window.event.clientY<50){

while(window.event.clientY<50&&document.body.scrollTop>0){
 window.scrollBy(0, -1);
 }
 }

}

document.onmousemove=mauspos;

Funktioniert nicht richtig, da ich innerhalb der Funktion nicht mehr an die aktuelle Mausposition rankomme (da der event nicht neu aufgerufen wird)...
Hat jemand eine Idee wie man diese Problem beheben könnte?

  1. Hallo,

    Funktioniert nicht richtig, da ich innerhalb der Funktion nicht mehr an die aktuelle Mausposition rankomme (da der event nicht neu aufgerufen wird)...

    Klar - du denkst noch nicht eventgesteuert genug. ;)

    In einem Handler kannst du nur ein Ereignis und dessen Eigenschaften behandeln. Du weißt darin nicht (automatisch), was vorher war und kannst auch nicht wissen, was danach für Ereignisse eintreten. Es werden tausende Mousemove-Events gefeuert, wenn der Anwender den Mauszeiger über das Dokument wandern lässt.

    Du musst also etwas anstoßen, was auch noch in der erneuten Ausführung des Handlers durch ein neues Ereignis verfügbar ist, also nebenher abläuft. Am besten arbeitest du mit einem Intervall, der alle X Millisekunden um einen bestimmten Wert nach oben scrollt arbeiten.

    Dieser Intervall wird gestartet, wenn ein mousemove-Ereignis mit bestimmten Eigenschaften passiert (bestimmte Mauszeigerposition). Der Intervall wird gestoppt, wenn ein mousemove-Ereignis mit einer anderen Mauszeigerposition passiert.

    Mathias

    1. danke, funktioniert jetzt wunderbar!