SynN: Probleme mit Layer -> Firefox (JS-Prob)

Hallo!

Ich hatte vor kurzem schon einmal geschrieben aber nicht wirklich Hilfe bekommen, gerade habe ich meinen Topic im Archiv wiedergefunden, weshalb ich jetzt den neuen öffne.
Es geht um folgenden Code:

descarray = new Array(
        "Bs1",
        "Bs2"
 "Bs3"
 );
 var overdiv="0";
 var x = "" ,y = "";

function popLayer(a)
 {
  var mx = x;
  var my = y;

if(!descarray[a])
  {
   descarray[a]="<font color="red">Beschreibung fehlt</font>";
  }
  desc = '<table cellspacing="0" cellpadding="0" border="0" style="border: dashed 1px black;" bgcolor="#000000"><tr><td>\n'
          +'<table cellspacing="0" cellpadding="10" border="0" width="100%"><tr><td bgcolor="#017CC2"><p align="center" style="font-size: 12; color: white">\n'
          +descarray[a]
          +'</p>\n</td></tr></table>\n'
          +'</td></tr></table>';
  document.getElementById("popupdiv").innerHTML = desc;
            document.getElementById("popupdiv").style.position = "absolute";
  document.getElementById("popupdiv").style.left = (x + 15);
  document.getElementById("popupdiv").style.top = (y - 5);
  alert(document.getElementById("popupdiv").style.top);
 }
 function hideLayer()
 {
  if (overdiv == "0")
  {
   document.getElementById("popupdiv").style.top="-500";
       }
 }

document.onmousemove = function handlerMM() {;
  x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
  y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
 }

und das dazugehörige DIV:
<div id="popupdiv" name="popupdiv" style="position:absolute; background-color: FFFFDD; color:black; border-color:black; border-width:20; visibility:show; left:25px; top:-100px; z-index:1" onmouseover="overdiv=1;" onmouseout="overdiv=0; setTimeout('hideLayer()',1)"></div>

Der Code soll über die Funktion handlerMM ständig die Positionen des Mauszeigers abfragen und in einer Variable speichern. Wenn ich dort ein alert(x); in eine Zeile eingebe, bekomme ich kein Popupfeld beim FF, beim IE jedoch schon. Dadurch bekomme ich beim alert in der Funktion showlayer() immer ein -100 als Ausgabewert, was auch in der div so angegeben ist, OBWOHL es eigentlich umgerechnet werden sollte (was wohl wegen dem onmousemove nicht wirklich funktioniert.
Könnt ihr mir helfen das Script auch FF-fähig zu machen?
Ich bitte darum, hierbei nicht auf die HTML-Formatierungen und Standards zu achten, das kommt hinterher noch... erst muss es funktionieren, DANN kommt das Aussehen ;)

Grüße
SynN

  1. Könnt ihr mir helfen das Script auch FF-fähig zu machen?
    Ich bitte darum, hierbei nicht auf die HTML-Formatierungen und Standards zu achten, das kommt hinterher noch... erst muss es funktionieren, DANN kommt das Aussehen ;)

    Naja, wenn du auf die Standards achten würdest, wäre zumindest eine Grund weg, warum das Skript nicht auf dem FF läuft. Der zweite Grund ist deine völig falsche Ermittlung der Mausposition.
    Ein Beispiel.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Sorry, aber selbst daraus werde ich nicht schlau...
      Ich bin eher php-freak und komm mit sowas leider nicht klar.. -.-
      Ich probiere die ganze Zeit, das Script umzuschreiben, jedoch funzt gar nix, der FF bleibt beim

      var pos = new Object();
         pos.left = evt.clientX;
         pos.top = evt.clientY;

      hängen und gibt danach gar nix mehr aus.
      So hab ich die Funktion aufgebaut:

      function popLayer(a)
       {
        if(!descarray[a])
        {
         descarray[a]="<font color="red">Beschreibung fehlt</font>";
        }
        else
        {
         if ( !evt) var evt = window.event;
         if(window.document.captureEvents) window.document.captureEvents(Event.MOUSEMOVE);
         var pos = new Object();
             pos.left = evt.clientX;
             pos.top = evt.clientY;
             var b = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? window.document.documentElement : window.document.body || null;
             if (b)
             {
                 pos.scrollLeft= pos.left + b.scrollLeft;
                 pos.scrollTop = pos.top + b.scrollTop;
             }
             else if(document.layers)
             {
                 pos.scrollLeft = evt.pageX;
                 pos.scrollTop = evt.pageY;
                 pos.left = evt.pageX - window.pageXOffset;
                 pos.top = evt.pageY - window.pageYOffset;
             }
         desc = '<table cellspacing="0" cellpadding="0" border="0" style="border: dashed 1px black;" bgcolor="#000000"><tr><td>\n'
                 +'<table cellspacing="0" cellpadding="10" border="0" width="100%"><tr><td bgcolor="#017CC2"><p align="center" style="font-size: 12; color: white">\n'
                 +descarray[a]
                 +'</p>\n</td></tr></table>\n'
                 +'</td></tr></table>';
         document.getElementById("popupdiv").innerHTML = desc;
                   document.getElementById("popupdiv").style.position = "absolute";
         document.getElementById("popupdiv").style.left = ( pos.scrollLeft + 15 );
         document.getElementById("popupdiv").style.top = ( pos.scrollTop - 5 );
        }
       }

      Ist sicher auch kein Standard oder? :/ ;)