DerDu: Firefox und Mausposition

Ok.. Ich gebe es zu, ich bin verzweifelt und alles Suchen hier hat mir nix geholfen. :(

Es geht um folgenden Ausdruck:

window.event.offsetX

Laut SelfHTML sollte er im IE und FF reibungslos funktionieren. Der IE macht es auch, aber FireFox sagt einfach:

Fehler: window.event has no properties

Also die erste Frage: Wie muss der oben genannte Ausdruck lauten, damit FF versteht was ich von ihm will?

Und die Zweite: Wieso behauptet das sonst sehr genaue SelfHTML das es im FF gehen würde? :)

Noch zur Info: Ich benötige den Wert um die Mausposition auf einem Image irgendwo im Dokument festzustellen.

  1. Moin!

    Noch zur Info: Ich benötige den Wert um die Mausposition auf einem Image irgendwo im Dokument festzustellen.

    Bei einem Click? Da hätte ich was besseres: Nimm das immage als input eines Formulars.

    Ansonsten hier ein Schnipsel aus einem meiner Skripte:
    document.onmousemove = pos;
    function pos(event) {
      if ((!document.all) && (event.clientX) && (event.clientY) && (event.clientX > 0) && (event.clientY > 0)) {
    ...
    }

    Dich interessiert das event.clientX und das event.clientY.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Ich möchte die Koordinaten aber nicht relativ zum Fenster sondern zur Grafik also nützt mir clientX/Y nich viel ;)

      (und es geht um das Mousemove-Event.. jap)

      1. Ich möchte die Koordinaten aber nicht relativ zum Fenster sondern zur Grafik also nützt mir clientX/Y nich viel ;)

        Du suchst vermutlich layerX/Y

        http://javascript.jstruebig.de/exp/mouse-test.html

        Noch ausführlicher und besser als meine ist diese
        http://www.quirksmode.org/js/introevents.html

        Struppi.

        1. Ja, dass sollte auch eigentlich funktionieren, aber er gibt mir den Wert: "undefined" aus.

          Ich benutze es wie folgt (ähnlich) in einem sonst leerem HTML-Doc:

          <img scr="bsp.jpg" onMousemove="JavaScript:zoom_move(this,100,100);">

          Und die Funktion dazu lautet:

          function zoom_move (element,zoom_w,zoom_h)
          {

          //...

          //IE
           if( document.all )
           {
            var posx = window.event.offsetX;
            var posy = window.event.offsetY;
           }
           else // N / FF
           {
            var posx = element.layerX;
            var posy = element.layerY;
           }

          //...

          }

          nur tut sich wie gesagt beim layerX/Y nix. :(

          1. Ich benutze es wie folgt (ähnlich) in einem sonst leerem HTML-Doc:

            <img scr="bsp.jpg" onMousemove="JavaScript:zoom_move(this,100,100);">

            Du musst hier den Event übergeben, steht auch auf Quirksmode und das Label ist überflüssig.

            <img scr="bsp.jpg" onMousemove="zoom_move(event, this,100,100);">

            Und die Funktion dazu lautet:

            function zoom_move (element,zoom_w,zoom_h)

            function zoom_move (e, element,zoom_w,zoom_h)

            {

            //...

            //IE
            if( document.all )
            {
              var posx = window.event.offsetX;
              var posy = window.event.offsetY;
            }
            else // N / FF
            {
              var posx = element.layerX;
              var posy = element.layerY;
            }

            Wieso document.all prüf doch einfach auf das was du verwenden willst.

            var posx;
            var posy;

            if( e.offsetX )
            {
             posx = e.offsetX;
             posy = e.offsetY;
            }
             else
            {
               posx = e.layerX;
               posy = e.layerY;
              }

            }

            Struppi.

            1. Super! Das war genau die Antwort die ich gebraucht habe.. tausend Dank, mit dem übergebenen Event funktioniert es nun auch im Firefox.
              Hätte nicht gedacht, dass es so einfach ist. ^^

              ----
              THX
              DerDu

  2. Hallo,

    Es geht um folgenden Ausdruck:

    window.event.offsetX

    Laut SelfHTML sollte er im IE und FF reibungslos funktionieren. Der IE macht es auch, aber FireFox sagt einfach:

    Wo steht das in SELFHTML?

    Im Firefox kann man nicht über window.event auf das Ereignis-Objekt zugreifen.
    http://de.selfhtml.org/javascript/objekte/event.htm#allgemeines
    »(...) Beide Funktionen erwarten einen Parameter namens Ereignis. Über diesen Parameter können die Funktionen auf Eigenschaften des Event-Objekts zugreifen. Im Internet Explorer hingegen muss über window.event auf das Event-Objekt zugegriffen werden. Daher wird direkt am Anfang der beiden Funktionen mit einer if-Anweisung abgefragt, ob der Parameter Ereignis gesetzt wurde. Wenn dies nicht der Fall ist, wird das Event-Objekt aus window.event in der Variable Ereignis gespeichert. Dadurch steht das Event-Objekt auf jeden Fall in der Variable Ereignis zur Gebrauch.«

    Daher:

    function Handler (Ereignis) {
      if (!Ereignis)
        Ereignis = window.event;
      /* Mach was mit dem Ereignis-Objekt */
      ...
    }

    Und die Zweite: Wieso behauptet das sonst sehr genaue SelfHTML das es im FF gehen würde? :)

    Wo behauptet das SELFHTML?
    http://de.selfhtml.org/javascript/objekte/event.htm#offset_x_y
    Da sehe ich kein Firefox-Icon. Deshalb wurde dort nur die window.event-Schreibweise verwendet.

    Noch zur Info: Ich benötige den Wert um die Mausposition auf einem Image irgendwo im Dokument festzustellen.

    Na, dann musst du es für den Firefox und die anderen Browser anders lösen, wenn sie offsetX/Y nicht kennen.
    Zum Beispiel kannst du pageX/Y verwenden und davon den offsetTop/Left-Wert des Bildes abziehen (http://de.selfhtml.org/javascript/objekte/all.htm#offset_top, http://www.quirksmode.org/js/findpos.html). Heraus kommen sollte die Mausposition relativ zum Bild.

    Mathias

  3. Moin!

    Noch zur Info: Ich benötige den Wert um die Mausposition auf einem Image irgendwo im Dokument festzustellen.

    Nochmal die Frage: wann brauchst Du es (immer. oder nur bei einem Klick) -> Grafik als Formularelement
    Weitere Frage: Ist Dir eventuell die Information wichtig über welchem Bereich der Mauszeiger gerade ist? Image- Map und "onmouseover=" als Eventhandler.

    Diese Möglichkeiten würden Dir, wenn die Problemstellungen so sind, einiges an Aufwand sparen.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development