Abend alle zusammen!
Ich sitze seit ein paar Stunden an einen kleinem Script, welches ich für einen Kunden schreibe, aber irgendwie treffe ich auf eine Wand.
Script an sich funktioniert eigentlich, zumindest unter Chrome, Opera und Safari, alleine der Firefox und der Explorer machen mir Schwierigkeiten.
Zum Script:
In einem Container befinden sich Daten, welche in ihrer Struktur breiter sind als der Container. (Strecken Horizontal drüber.)
Über zwei Bereiche an dem linken und rechten Rand soll gescrollt werden (hierfür habe ich zwei weitere Container mit fester breite über den Hauptcontainer drübergelegt und starte über onmouseover das Script)
Dabei wird auch noch die relative Position der Maus ermittelt, sodass die Geschwindigkeit des Scrollens über den Abstand zum Rand geregelt werden kann.
So, dazu nur, damit ihr einen Überblick habt wozu das Script überhaupt dienen soll.
Der Code an sich funktioniert ja auch so (darüber ob der nun schön ist, kann man ja streiten ;-) )
Problem ist nur, dass unter Firefox und Explorer das Event zum Verrecken nicht übertragen werden möchte. (Gibt mir auch in der Fehlerkonsole immer wieder an, dass "e" nicht definiert sei.)
Genaue Fehlermeldungen:
Firefox: "e is undefined"
Explorer: "o.offsetWidth ist Null oder kein Objekt"
Hier rüber rufe ich die Funktionen auf:
document.getElementById('left').onmouseover=scrollleft;
document.getElementById('right').onmouseover=scrollright;
document.getElementById('left').onmouseout=stopscroll;
document.getElementById('right').onmouseout=stopscroll;
und so sieht das Script aus:
steps=5;
function scrollright(e) {
if(!e)e=window.event;
o=e.target||e.srco; //hier die Stelle mit dem Firefox
v=o.offsetWidth/steps; //hier die Stelle mit dem Explorer
o.onmousemove=right;
x=e.clientX;
scrollen = setInterval("document.getElementById('scrolldiv').scrollLeft+="+Math.ceil((x-o.offsetLeft-(o.offsetWidth+v))/v),1);
}
function scrollleft(e) {
if(!e)e=window.event;
o=e.target||e.srco; //hier die Stelle mit dem Firefox
v=o.offsetWidth/steps; //hier die Stelle mit dem Explorer
o.onmousemove=left;
x=e.clientX;
scrollen = setInterval("document.getElementById('scrolldiv').scrollLeft+="+Math.ceil((x-o.offsetLeft+1)/v),1);
}
function right(e){
x=e.clientX;
clearInterval(scrollen);
scrollright();
}
function left(e){
x=e.clientX;
clearInterval(scrollen);
scrollleft();
}
function stopscroll(e) {
clearInterval(scrollen);
o.style.background="none";
o.onmousemove=null;
}
Was ich nur nicht ganz verstehe ist, dass ich in einem anderen Script auf genau die selbe Art und Weise die Funktionen aufrufe, der Firefox die dort auch richtig annimmt, hier in diesem Falle jedoch nicht.
(Der Explorer hat es in dem anderen Script mal getan, jetzt jedoch will es auch nicht mehr.)
Naja, ich hoffe mal, dass mir da einen den entscheidenden Tipp geben kann zu dem Problem mit der Objektreferenz.
Ich hab da echt irgendwie ein Brett vorm Schädel.
Danke schon einmal im Vorraus!!