Javascript-Problem bei Safari

Das Forum fĂĽr Programmierer und Systemadmins. Von Shell-, Perl- und PHP-Scripts bis zur objektorientierten Programmierung mit C++.

Javascript-Problem bei Safari

Beitragvon hellbringer » Fr 19 Mai, 2006 15:41

Ich hab einen scrollbaren Div-Layer gemacht, der je nach Mausposition in eine Richtung scrollt. Mein Problem ist jetzt, dass Safari nicht auf das mousemove-Event reagiert. In jedem anderen getesteten Browser funktioniert es aber (IE6, FF, Opera, Konqueror, IE5-mac).

Die Eventabfrage sieht bei mir so aus:

Code: Alles auswählen
  if (document.addEventListener) {
    document.addEventListener("mousemove", scrollX, false);
  } else {
    if (document.getElementById || document.all) {
      document.body.onmousemove = scrollX;
    } else {
      document.captureEvents(Event.MOUSEMOVE);
      document.onmousemove = scrollX;
    }
  }


scrollX ist die Funktion, die schlussendlich den Div-Layer scrollt. Aber so weit kommt es in Safari gar nicht. Safari tut einfach _nichts_. Nicht mal eine Fehlermeldung konnte ich ihm entlocken.

Hat hier wer Erfahrung mit Safari und kann mir weiterhelfen?
hellbringer
Profi-User
Profi-User
 
Beiträge: 1619
Registriert: Di 04 Mai, 2004 19:35

Beitragvon -slcp- dark » Sa 27 Mai, 2006 12:30

Ich glaube das is ein Bug vom Safari, werde aber noch mal googeln
!nodE xDSL Privat medium 4096/512, unlimited -Xp- ~NOSCE TE IPSUM~
-slcp- dark
Board-User Level 3
Board-User Level 3
 
Beiträge: 1300
Registriert: So 18 Sep, 2005 09:11
Wohnort: Nö

Beitragvon hellbringer » Sa 27 Mai, 2006 13:30

hab den fehler schon. es sind eigentlich 2 fehler, deswegen hab ich lange gebraucht, um darauf zu kommen.

1. es lag an einer funktion die ich "startScroll" genannt habe, und dessen name bei safari (und anscheinend nur dort) schon verwendet wird.

2. diese abfragemethode funktioniert bei safari und jedem browser, den ich getestet habe:

Code: Alles auswählen
var nc = !!(document.captureEvents && !document.getElementById);
var nc6 = !!(document.captureEvents && document.getElementById);

if(nc) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = getMouse;

function getMouse(e) {
  var posX = (nc || nc6)? e.pageX : window.event.x;
  var posY = (nc || nc6)? e.pageY : window.event.y; }
hellbringer
Profi-User
Profi-User
 
Beiträge: 1619
Registriert: Di 04 Mai, 2004 19:35


ZurĂĽck zu PROGRAMMIER FORUM

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste