Falk: Keyevents

Beitrag lesen

Hi,

Ich nutze auf meiner Seite die JSScrollbar (zu finden hier: http://www.n-son.com/scripts/jsScrolling/index.html) um einen div zu scrollen.
aktiviert wird das scrolling beim klick auf das dementsprechende Image.

Da ich nun aber auch die arrow-Tasten nutzen möchte, habe ich ein mouseevent simuliert. problematisch dabei ist, dass es nicht mehr aufhört zu funktionieren. ;)
der Plan ist folgender:

Beim keydown-event soll das onmousedown event eines images aufgerufen werden. beim keyup event folglich das onmouseup event des images. Funzt einwandfrei solange ich die Taste nur kurz betätige. Bleibe ich aber länger drauf, fängt die scrollbar planmäßig an durchweg zu scrollen. dadurch läuft das script und das keyup-event scheint nicht mehr einzutreffen. somit hört es ned auf zu scrollen. Um das script zu stoppen MUSS das mouseup event aufgerufen werden bzw eine Funktion namens scroller.stopScroll(). aber scheinbar wird Keyup nicht ausgeführt solange noch ein anderes script läuft.

Theoretisch kann es nicht am Code der Scrollbar liegen. denn mittels Maus werden die Events onmousedown und onmouseup korrekt aufgerufen und ausgeführt.  Auf das durchgängige scrollen möchte ich natürlich nciht verzeichten, sonst klickt sich der Nutzer ja den Zeigefinger kaputt, oder womit auch immer er klickt.

Ein Lösungsansatz war es, nicht das onmouse-event des Images zu nutzen, sondern die darin angesprochene Funktion direkt. Dann allerdings bewegt sich das scrollbar handle (Der Scrollbalken sozusagen) nicht mit. Denn dieser reagiert nur auf den Imageklick wie es scheint.

spiel schon den ganzen Tag. finde keine Lösung. Ihr vielleicht?

Hier meine Funktion.
 ~~~javascript document.onkeydown = function(event) {
event = event || window.event;
event.cancelBubble = true;
event.returnValue = false;

if (event.keyCode == 40) {  
	simulate(document.getElementById("Scrollbar-Down"), 'mousedown')  
}  
if (event.keyCode == 38) {	  
	simulate(document.getElementById("Scrollbar-Up"), 'mousedown')  
}  
return event.returnValue;  

}

document.onkeyup = function(event) {
event = event || window.event;
event.cancelBubble = true;
event.returnValue = false;
if (event.keyCode == 40) {
simulate(document.getElementById("Scrollbar-Down"), 'mouseup')
}
if (event.keyCode == 38) {
simulate(document.getElementById("Scrollbar-Up"), 'mouseup');
}

return event.returnValue;  

}

  
beste Grüße, Falk