Chräcker Heller: Mauskoordinaten bei mozilla/NS6

Hallo,

wenn ich mal was frage, lande ich immer an solche Reiztemen, doch genau dazu finde ich nie was. Vorhin hätte ich beinahe was zu "verändern des Cursors" gefragt, aber habs zum Glück noch selber rausgefunden ;-)

Also: vorab: ich habe das mit dem event-handler nie so richtig kapiert. Ich habe auf einer Seite mehrere Divs. Ich möchte beim Klick auf ein beliebiges Div eine Routine aufrufen. Habe ich per onClick im div-Tag gemacht. (Das ganze braucht nicht beim NS4.xy zu funktionieren....)

Wie erfahre ich beim mozilla nun die Mauskooddinate? Da habe ich ein event-Block vorm Kopf. Für die IEs habe ich

var x=event.x; var y=event.y+document.body.scrollTop;

aber wie bekomme ich die koordinaten beim mozilla? Bisher habe ich immer  einen

document.onmousdown = koordinatenbestimmfunction

an "prominenter Stelle" ins Script geschrieben und dann in der Funktion "koordinatenbestimmfunction" gleich die koordinaten abgefragt. Aber ich will ja keine Funktion bei jedem(!) Mausklick aufrufen (in der eben dann die koordinate ermittelt wird) sondern ich möchte nur bei einem Klick auf eins der Divs eine Funktion aufrufen....

Habe mir gedacht: ist ja wurscht, rufe ich zu dem "onClick" per "document.onmousdown" halt die bestimmungsroutiene auf, klickt man auf dem Div, habe ich die Koordinate durch die Funktion, die ich per
document.onmousdown bestimmt habe, zur Verfügung, klickt der besucher "neben" einem Div, habe ich die koordinate zwar auch, aber kostet ja nichts. Aber irgendwie klapte dieser Ansatz nicht, die Koordinate "kam nie an" (sehr genau beschrieben, ich weiß....)

Gibts "denn" beim neuen DOM-System nicht eine einfache einheitliche Methode? Und wenn nein, wie gehts dann für den NS6 bzw mozilla? Stark verkürzt: wie komme ich nach einem klick auf ein Div (und nur dann) an die Mauskoordinate?

Danke,

Chräcker

  1. Hallo,

    versuch mal um den div herum einen ilayer zu notieren:

    <ilayer name="testlayer"><div onClick="wasweisich();">...</div></ilayer>

    [...] Bisher habe ich immer  einen

    document.onmousdown = koordinatenbestimmfunction

    und dann statt dessen:

    document.testlayer.document.onmousedown = koordinatenbestimmfunction;

    zu schreiben. Sollte eigentlich funktionieren.

    Robert

    http://www.designauswahl.here.de
    mit kostenlosem Webseiten-Generator ROBE.dit
    [more than a HTMLE.dit]

    1. hi

      versuch mal um den div herum einen ilayer zu notieren:
      <ilayer name="testlayer"><div onClick="wasweisich();">...</div></ilayer>

      da steht Netscape6/Mozilla. Der hat diesen proprietären Kram nicht mehr.

      http://selfhtml.teamone.de/dhtml/modelle/dom.htm#event_handling
      das Beispiel da gibt u.a. in Mozilla und konqueror auch die absolute Mausposition zurück.

      gruss Kai

      1. Hallo,

        die seite habe ich wohl "eben" immer überblättert, daß sieht ja "spannend komplex" aus, werde mal gleich mich reinknien.... Danke, auch an Robert für den versuch (keine Ironie....)

        Chräcker

      2. Hallo,

        versuch mal um den div herum einen ilayer zu notieren:
        <ilayer name="testlayer"><div onClick="wasweisich();">...</div></ilayer>

        da steht Netscape6/Mozilla.

        <schaem>Oups, hab ich wohl überlesen.</schaem> ;-)

        Robert

  2. Hallo Chräcker,

    Wie erfahre ich beim mozilla nun die Mauskooddinate? Da habe ich ein event-Block vorm Kopf. Für die IEs habe ich

    var x=event.x; var y=event.y+document.body.scrollTop;

    Du kannst doch einen onclick-Event auf jeden beliebigen Div setzen:

    document.getElementById('divID').onclick=SachWoDuBist;

    Die Funktion kriegt dann mit 'e' den Event übergeben:

    function SachWoDuBist(e){
    alert('X: '+e.clientX+', Y: '+(e.clientY+scrollY));
    }

    Grüße, Stefan

    1. Hallo,

      Du kannst doch einen onclick-Event auf jeden beliebigen Div setzen:

      genau dieses "doch" in Deiner Antwort beschreibt wunderbar mein Brett vorm Kopf. Na klar ;-) Danke.... (werde allerdings erst mal mit Kais Quellenangabe rumspielen, daß sieht auch recht spannend aus.... aber genau da saß mein Brett ;-))

      Chräcker

    2. Moin,

      document.getElementById('divID').onclick=SachWoDuBist;

      Na wenn wir schon dabei sind können wir ja auch richtige DOM-Events nehmen:
      document.getElementById('divID').addEventHandler("click",SachWoDuBist, false);

      function SachWoDuBist(e){
      alert('X: '+e.clientX+', Y: '+(e.clientY+scrollY));
      }

      Was macht das scrollY da eigentlich?

      --
      Henryk Plötz
      Grüße von der Ostsee

      1. Moin,

        document.getElementById('divID').addEventHandler("click",SachWoDuBist, false);

        Ist wohl schon ein bisschen zu Spät. Das da ^^^^^^^ sollte natürlich Listener heissen.

        --
        Henryk Plötz
        Grüße von der Ostsee

      2. Hi,

        document.getElementById('divID').onclick=SachWoDuBist;

        Na wenn wir schon dabei sind können wir ja auch richtige DOM-Events nehmen:
        document.getElementById('divID').addEventHandler("click",SachWoDuBist, false);

        Ok, "addEventListener" wäre sicher korrekter. Mir ist aber kein DOM-Browser bekannt, der das "onclick" nicht interpretieren würde.

        function SachWoDuBist(e){
        alert('X: '+e.clientX+', Y: '+(e.clientY+scrollY));
        }

        Was macht das scrollY da eigentlich?

        Das ist natürlich nur sehr schwer zu erraten. ;-)
        http://www.mozilla.org/docs/dom/domref/dom_window_ref112.html#1000315
        Chräcker hatte doch sowas in seinem Beispiel.

        Grüße, Stefan