tomgk: Mausposition ohne Event auslesen

Hallo,

Wie kann man die Mausposition ohne Event auslesen?
Also:Wie bekommt man bei

function eventFunc(ereignis)  
{  
    mouseX=ereignis.pageX;  
}

das ereignis.pageX wenn man nicht document.onmousexxx=eventFunc schreibt bzw ereignis nicht definiert ist?
Gibts eine andere Möglichkeit ereignis zu bekommen ohne das man dies über ein Event macht?

MfG
tomgk

  1. Hallo,

    Nur im IE per window.event, in einem Browser aber afaik nicht.

    mfg, Flo

    --
    sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
    1. Hallo,

      Ist Folgendes Möglich?:

      var ereignis;  
        
      function getEreignis(e)  
      {  
           ereignis=e;  
      }  
        
      document.onmousemove=getEreignis;  
      setTimeout("document.onmousemove=null",100);  
      
      

      Nur das Problem was ich gefunden habe: Was wenn die Maus nicht innerhalb von 100ms bewegt wird?

      Hat das jamanden auf eine Idee gebracht?

      MfG
      tomgk

      1. Hi,

        Nur das Problem was ich gefunden habe: Was wenn die Maus nicht innerhalb von 100ms bewegt wird?

        dann packs doch in deine Funktion mit rein:

        var ereignis;  
          
        function getEreignis(e)  
        {  
              ereignis=e;  
              document.onmousemove=null;  
        }  
        
        

        Was hast du denn eigentlich vor?

        gruß
        peter

      2. Ist Folgendes Möglich?:

        Möglich ja, aber ob es sinnvoll und zweckmäßig ist, können wir nur beurteilen, wenn du ein paar Infos herausrückst.

        var ereignis;

        function getEreignis(e)
        {
             ereignis=e;
        }

        document.onmousemove=getEreignis;
        setTimeout("document.onmousemove=null",100);

        
        >   
        > Nur das Problem was ich gefunden habe: Was wenn die Maus nicht innerhalb von 100ms bewegt wird?  
          
        Irgendwas hast du grundsätzlich missverstanden. Welchen Zweck soll dieses Mousemove-Abfragen und Überschreiben kurze Zeit später erfüllen?  
          
        Ehrlich gesagt glaube ich, dass du das Event-Handling noch nicht verstanden hast bzw. noch nicht weißt, wie du es effizient nutzen kannst. Es ist nämlich fast alles mit Event-Handling umsetzbar, sodass die Frage »Mausposition auslesen ohne Maus-Event« sich i.d.R. nicht stellt.  
          
        Die Antwort auf deine Ursprungsfrage, ob es ohne Event-Handler geht, lautet nein. Also musst du es mit machen. Die Frage ist nun, wie sich die Funktion, in der du die Mausposition brauchst, zu dem Zeitpunkt verhält, indem ein mousemove-Ereignis passiert. Ideal wäre natürlich, wenn du das, was du tun willst, im mousemove-Handler tust. Natürlich nur dann, wenn es nötig ist. Sprich, du könntest genauso eine globalen Variable auf true setzen, damit beim nächsten Mousemove-Ereignis eine bestimmte Funktion angestoßen wird. Die Variable wird dann wieder auf false gesetzt, bis die Mausposition beim nächsten Mal gebraucht wird.  
          
        Anders herum ist es kein Problem, einfach den mousemove-Handler, den du bereits umgesetzt hast, ständig laufen zu lassen und ihn die jeweils aktuelle Position in der globalen Variable speichern zu lassen. Das Löschen des Handlers ist also gar nicht nötig und deine zweite Frage - was tun, wenn die Maus für 100ms ruht - stellt sich somit nicht. Wenn du eine Funktion aufrufst, die die aktuelle bzw. letzte Mausposition braucht, dann kann sie einfach die globale Variable auslesen.  
          
        Wie man es dreht oder wendet, »Mausposition ohne Ereignis« ist in JavaScript unmöglich sowie wie gesagt i.d.R. nicht gewünscht und würde einige unnötige Kopfstände benötigen.  
          
        
        > Hat das jamanden auf eine Idee gebracht?  
          
        Ja. Es hat Verwirrung gestiftet.  
          
        Auch von mir die Frage: Was hast du überhaupt vor?  
          
        Mathias
        
        -- 
        [JavaScript-Erweiterung für das SELFHTML-Forum](http://forum.de.selfhtml.org/js/doku/)
        
        1. Hallo,

          Anders herum ist es kein Problem, einfach den mousemove-Handler, den du bereits umgesetzt hast, ständig laufen zu lassen und ihn die jeweils aktuelle Position in der globalen Variable speichern zu lassen.

          Also eine Funktion schreiben und document.onmousemove zuweisen? Würde das nicht schlecht für den Prozessor sein?

          Auch von mir die Frage: Was hast du überhaupt vor?

          Ich möchte eine JS-Datei erstellen mitder man Browser-Abhängige Funktionen Browserunabhängig macht, z.B.: Abfragen der Mausposition und zusätzliche Funktionen wie Drag 'n Drop.

          Es gibt eine Variable mangager die ihrerseits eine Variable namens mouse besitzt mit der man die Mausposition abfragen kann.
          Für das Abfragen der mouseX-Position:manager.mouse.getX()

          Starten eines Drag-Vorgangs:manager.drag.start(vwindow,titelleiste) wobei vwindow ein virtuelles Fenster ist und titelleiste die Titlelleiste ist wodurch das Element verschoben wird (diese Funktion will ich erst schreiben, habs erst ohne titelleiste geschrieben)

          MfG
          tomgk

          1. Es gibt eine Variable mangager die ihrerseits eine Variable namens mouse besitzt mit der man die Mausposition abfragen kann.
            Für das Abfragen der mouseX-Position:manager.mouse.getX()

            Dann übergebe der Funktion einfach das Event-Objekt:
            manager(e).mouse.getX()
            Und die Funktion gibt das mouse-Objekt zurück.
            Anders wäre es m.E. auch nicht sinnvoll.

            Starten eines Drag-Vorgangs:manager.drag.start(vwindow,titelleiste)

            Drag and Drop kannst du vollständig Event-basiert umsetzen.
            Ein Aufruf dieser Methode sollte nichts anders tun als mousedown-Handler vergeben. Das Ziehen wird dann über einen mousemove-Handler gelöst.

            http://aktuell.de.selfhtml.org/artikel/dhtml/draganddrop/
            http://javascript.jstruebig.de/javascript/67/

            Mathias