mabuhay: Mausposition ermitteln

Hi

Hier http://forum.de.selfhtml.org/archiv/2006/1/t121722/#m782727 habe ich diesen Quellcode gefunden:

  
function mouse_pos(evt)  
{  
    if(!evt) evt = window.event;  
    var pos = { left: evt.clientX, top:evt.clientY };  
  
    var b = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ?  
    window.document.documentElement : window.document.body || null;  
  
    if (b)  
    {  
        pos.left += b.scrollLeft;  
        pos.top +=  b.scrollTop;  
    }  
    return pos;  
}  

Wie kann ich diese Koordinaten nun von einer anderen Funktion aus benutzen? Also wie muss der Funktionsaufruf genau heissen wenn ich die Koordinaten der Maus in dem Fenster ermitteln will, von welchem aus auch der Klick stammt?
Also als Beispiel:

  
function show_mouse_pos ()  
 {  
   var p = mouse_pos(???);  
   alert(???);  
 }  

mfg

  1. Lieber Thomas,

    mir scheint, dass Du da etwas missverstanden hast. Die von Dir zitierte Funktion wird beim Eintreten eines (im verlinkten Thread ist es das Mouse-over-)Events ausgeführt. Das bedeutet, dass der Browser an diese Funktion spezielle Parameter (nämlich das event-Objekt) übermittelt. Darin sind auch die "Mauskoordinaten" enthalten, an die Du per Javascript sonst nur schwerlich kommst.

    Daher wird Dir diese Funktion wenig nutzen:

    function show_mouse_pos ()

    {
       var p = mouse_pos(???);
       alert(???);
    }

      
    Du kannst jedoch eine globale Variable (am besten eine Objekt-Variable) definieren, in die Du die Koordinaten aus Deiner event-getriggerten Funktion heraus hineinschreiben lässt. Willst Du zu jeder Zeit die Mauskoordinaten verfügbar haben, dann solltest Du einen Eventhandler onMouseMove für den body definieren, der eben eine solche Abspeicherung in der aufzurufenden Funktion vornehmen lässt. Dann kannst Du von jeder beliebigen Funktion heraus diese globale (Objekt-)Variable abfragen.  
      
    Liebe Grüße aus [Ellwangen](http://www.ellwangen.de/),  
      
    Felix Riesterer.
    
  2. Hallo,

    function mouse_pos(evt)

    {
        var pos = { left: evt.clientX, top:evt.clientY };

      
    { eigenschaft : wert, eigenschaft : wert, ... } ist ein sogenanntes Object-Literal, es erzeugt ein allgemeines Objekt, das als Container für das Wertepaar der Mauszeigerposition dient. Die Funktion gibt dieses Object dann als Ergebnis zurück.  
      
    
    > ~~~javascript
    
    function show_mouse_pos ()  
    
    >  {  
    >    var p = mouse_pos(???);  
    >    alert(???);  
    >  }
    
    

    mouse_pos braucht wie gesagt das Event-Objekt als Parameter. show_mouse_pos muss also als Handlerfunktion für ein Click-, Mousemove-, Mouseover- oder Mouseout-Ereignis registriert sein.

    Dokumentweit geht das Registrieren z.B. so:

    document.onmousemove = show_mouse_pos;

    Bei einem Einzelelement entsprechend:

    document.getElementById("irgendeineID").onmouseover = show_mouse_pos;

    mouse_pos gibt wie gesagt ein Object zurück mit zwei Eigenschaften namens top und left. Auf Eigenschaften eines Objektes greifst du wie gewohnt über den Punkt-Operator nach dem Schema objekt.eigenschaft zu.

    function show_mouse_pos (evt) {  
       if (!evt) evt = window.event;  
       var p = mouse_pos(evt);  
       alert(p.left + " " + p.top);  
    }
    

    Mathias