Marc: Mauskoordinaten die nte

Guten Morgen,

hier mal mein Javascript-Code:

-----------------------------
var sn_subnoteID     = 'divSubnote';
var sn_bgColor    = '#FF0000';
var sn_posCursorTop  = 0;
var sn_posCursorLeft = 0;

function showSubnote()
{
 var divSubnote  = document.createElement('div');
 divSubnote.id   = sn_subnoteID;

var e   = window.event;
 var posX  = e.clientX;
 var posY  = e.clientY;

divSubnote.style.backgroundColor    = sn_bgColor;
 divSubnote.style.position           = 'absolute';
 divSubnote.style.left               = posX + sn_posCursorLeft;
 divSubnote.style.top                = posY + sn_posCursorTop;

document.body.appendChild(divSubnote);
 divSubnote      = document.getElementById(sn_subnoteID);
 divSubnote.innerHTML = 'sdsadsadsadsad';
}
-----------------------------

Hier der dazugehörige Funktionsaufruf in HTML (Nur zum Testen):
----------------------------
...
<div onMouseOver="showSubnote();" id="testDiv">
            Ich bin der Layer
        </div>
...
----------------------------

  1. Oh mann, das ist wohl noch zu früh am Morgen -

    das Problem ist, dass im FF die Meldung kommt, dass e keine Properties hätte...

    1. Hallo!

      das Problem ist, dass im FF die Meldung kommt, dass e keine Properties hätte...

      Ja, woher soll der FF wissen, was "e" ist?

      showSubnote(e)

      Schönen Gruß

      Afra

      1. Ja, woher soll der FF wissen, was "e" ist?

        var e = window.event;

        ?

        1. Hallo!

          var e = window.event;

          ??

          Ich weiß ja nicht, was Du meinst, aber ich habe mich eigentlich recht eindeutig ausgedrückt.

          Was Dein Script ansonsten macht, kontrolliere ich nicht, Du wolltest die Mausevents.

          Für DOM fähige Brwoser
          function test(e) {
           alert(e.pageX);
           alert(e.pageY);
          }
          window.onload = function () {
           document.onmousedown = test;
          }

          Und schon hast Du bei klick die genaue Mausposition

          Schönen Gruß

          Afra

          1. Ich hatte weiter oben schon geschrieben, dass ich dass jetzt mittels Parameter event beim Funktionsaufruf hinbekommen habe. NAch deinem Muster :)

            Aber ich würde die Funktion gerne frei von Parametern halten, weil da später noch genügend reinkommen.

  2. Ich bin jetzt schon etwas weiter,

    wenn ich den Funktionsaufruf mit dem Parameter event starte, und dann das var e = ...

    weglasse und stattdessen dafür diesen Paramter benutze geht es. Aber jetzt bleibt noch das nächste Problem, nämlich, dass der FF die Zuweisung des top- und left-Wertes nicht akzeptiert, sondern mit der Fehlermeldung

    Fehler: Fehler beim Verarbeiten des Wertes für Eigenschaft 'left'.  Deklaration ignoriert.

    bzw.

    Fehler: Fehler beim Verarbeiten des Wertes für Eigenschaft 'top'.  Deklaration ignoriert.

    kommentiert

    1. Hallo Marc!

      Fehler: Fehler beim Verarbeiten des Wertes für Eigenschaft 'left'.  Deklaration ignoriert.

      bzw.

      Fehler: Fehler beim Verarbeiten des Wertes für Eigenschaft 'top'.  Deklaration ignoriert.

      divSubnote.style.left = posX  + 0;
      divSubnote.style.top = posY + 0;

      Wehslb addierst Du hier die 0?

      Schönen Gruß

      Afra

      1. Das war ein Fehler, die 0 war nur zum testen, aber ich hatte das 'px' hinten dran vergessen...

        1. Hallo!

          Deshalb hatte ich Dich gefragt. Du hättest so nämlich nicht addieren können. Aber selbst finden ist immer der bessere Weg.

          Schönen Gruß

          Afra

  3. Hallo,

    function showSubnote()

    function showSubnote (e)

    Im Internet Explorer greift man über window.event auf das Eventobjekt zu, in anderen Browsern wird es der Handler-Funktion als erster Parameter übergeben, aber nur dann, wenn der Handler per JavaScript (element.onevent = handler;) registriert wurde.

    {
    var divSubnote  = document.createElement('div');
    divSubnote.id   = sn_subnoteID;

    var e   = window.event;

    Dann gleicht man die Variable e in beiden Browsern so an:

    e = e || window.event;

    oder

    if (!e)
       e = window.event;

    Offenbar ist es auch möglich, den Parameter »event« zu nennen, ein Zugriff auf event ergibt dann im Firefox und Co. die lokale Variable, im IE halt window.event (ungetestet).

    <div onMouseOver="showSubnote();" id="testDiv">

    Wenn du allerdings mit solchen Event-Handler-Attributen arbeitest, dann kannst du nur über window.event auf das Eventobjekt zugreifen, was nur im IE möglich ist. Aber innerhalb des Attributs kannst du in allen Browsern über »event« auf das Eventobjekt zugreifen. Dieses kannst du dann deiner Funktion übergeben:

    <div onMouseOver="showSubnote(event);" id="testDiv">

    In einem solchen Fall fällt die obige Angleichung weg.

    Mathias