firefox / mouse-X/Y kann mich mal wer kneifen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • firefox / mouse-X/Y kann mich mal wer kneifen

    moin zusammen und ein frohes neues.

    ich versteh gerade mal kurz gar nichts. ich will über js mit mouse-positionen arbeiten. dafür habe ich folgendes eingebaut.

    Code:
    var mX = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
     var mY = (document.all) ? window.event.y + document.body.scrollTop : e.pageY;
    
    alert ("test");
    lüppt überall, nur firefox kommt noch nicht mal dazu das alert poppen zu lassen... also aufpoppen jetzt nä.

    bös dankbar für tipps, da auch keine fehlermeldungen kommen...
    **********
    arkos
    **********

  • #2
    Re: firefox / mouse-X/Y kann mich mal wer kneifen

    In die Fehlerkonsole des FF geschaut?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ich verwende immer diesen Code, wenn es in allen Browsern funzen soll
      Code:
      Mouse = {};
      Mouse.doc = document;
      Mouse.MouseMoveHandler = function (e) {
           e = e || window.event;
      
           Mouse.x = (Mouse.doc.body.scrollLeft || 0) + e.clientX;
           Mouse.y = (Mouse.doc.body.scrollTop || 0) + e.clientY;
           Mouse.currentTarget = e.target || e.srcElement;
           return true;
      };
      
      if (Mouse.doc.attachEvent) {		//for IE
      	Mouse.doc.attachEvent("onmousemove",Mouse.MouseMoveHandler);
      } else if (Mouse.doc.addEventListener) {	//according to DOM
      	Mouse.doc.addEventListener("mousemove",Mouse.MouseMoveHandler,false);
      }
      
      function getMyMousePos() {
      	var txt = document.createTextNode(Mouse.x + " / " + Mouse.y);
      	if (document.getElementById("mou").lastChild != null) {
      		var node = document.getElementById("mou").lastChild;
      		document.getElementById("mou").removeChild(node);
      	}
      	document.getElementById("mou").appendChild(txt);
      }
      </head>
      <body onmousemove="getMyMousePos()">
      [...]
      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        ah ok. bin ja bekanntlich nicht so der js fuchs und hatte die konsole im ff vollends vergessen. sorry. klar "e is not defined"... aber menno. gibt es nicht eine ganz einfache maus x/y abfrage, die für alle browser stabil funzt? such mir schon einen wolf und bin schon viel zu lange mit dem thema beschäftigt...
        **********
        arkos
        **********

        Kommentar


        • #5
          werde jahlives code mal testen.... danke.
          **********
          arkos
          **********

          Kommentar


          • #6
            Original geschrieben von arkos
            ah ok. bin ja bekanntlich nicht so der js fuchs und hatte die konsole im ff vollends vergessen. sorry. klar "e is not defined"... aber menno.
            Schau dir mal das Beispiel zu pageX/-Y an, da siehst du wie das Event-Ereignis übergeben wird:

            http://de.selfhtml.org/javascript/ob...t.htm#page_x_y
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              @wahsaga: versetehe, aber das is je genau wieder der mist mit browserübergreifend. ie (6) kümmert sich nicht um die weiche und sage pageX ist Null etc...

              @jahlives: wie gesagt, kein js-guru hier. doch sehe ich, dass ich wohl scheinbar noch ein html-objekt brauche, welchem ich die id "mou" gebe. in meinen tests kommt lediglich objekt erforderlich...

              wenn ich meinem html bsp ein

              <input type="text" id="mou"....> gebe
              kommt: unerwarteter aufruf oder zugriff.

              man, ich fang im neuen jahr aber mal was doof an....
              **********
              arkos
              **********

              Kommentar


              • #8
                @arkos
                Das Objekt brauchst du nur wenn du den Wert irgendwo reinschreiben willst.
                Ich denke, dass es so nicht an ein Input Feld übergeben werden kann. Da wäre Feldname.value = angebracht. Meine Version funzt, wenn du es in ein div, span etc ppt schreiben willst.

                Gruss

                tobi

                Pass die Fkt zum testen einfach an. Einfach einen Kommentar um den Teil, den du nicht brauchst
                Code:
                function getMyMousePos() {
                /*
                    var txt = document.createTextNode(Mouse.x + " / " + Mouse.y);
                    if (document.getElementById("mou").lastChild != null) {
                        var node = document.getElementById("mou").lastChild;
                        document.getElementById("mou").removeChild(node);
                    }
                   document.getElementById("mou").appendChild(txt);*/
                   alert(Mouse.x+'/'+Mouse.y);
                }
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  hi jahlives,

                  hatte mittlerweile dein beispiel durchschaut, indem ich mir createTextNode() und kollegen näher angeschaut habe. nun: dein code funktioniert bei mir wunderbar bei ie und ff (hab im body n <p id="mou"> eingefügt - input ging wie du sagst nur über .value) nur opera hat ein schwer merkwürdiges verhalten. da kommt der zähler im y-bereich nicht über 34 hinaus?!?!?!?!?!?!?!?!?
                  **********
                  arkos
                  **********

                  Kommentar


                  • #10
                    nur opera hat ein schwer merkwürdiges verhalten.
                    Wundert dich das ???
                    Mit welchem Eventhandler hast du denn die Fkt getMyMousePos() verknüpft ? Beim Body Tag oder sonst wo ?

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Original geschrieben von jahlives
                      Ich verwende immer diesen Code, wenn es in allen Browsern funzen soll
                      ich habe gehört, dass attachEven und detachEvent unter IE Mac nicht funktioniert.
                      echt komisch, dass IE unter verschiedenen OS stress macht
                      Slava
                      bituniverse.com

                      Kommentar


                      • #12
                        Original geschrieben von Slava
                        ich habe gehört, dass attachEven und detachEvent unter IE Mac nicht funktioniert.
                        echt komisch, dass IE unter verschiedenen OS stress macht
                        OffTopic:
                        Der IE Mac ist ein vollkommen anderes Stück Software, hat mit dem IE Win ausser dem Namen so gut wie nichts gemeinsam.


                        Ausserdem ist IE Mac auch tot - Safari, Firefox, Opera dürften dort längst dessen Platz eingenommen haben.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          nein, wundert dich nicht

                          fehlerhaft lief es im opera als ich eventhandler onmousemove im <body>-tag verwendet habe. jetzt habe ich es mit einem onclick im <a>-tag (wo ich ihn später auch brauche) verwendet und selbst opera kommt damit an jeder stelle des bildschirmes zurecht. werde damit erstmal weiter arbeiten, und versuchen dies in meine scripte einzubauen.

                          vielen dank euch zwei.

                          edit:
                          schließ mich der letzten aussage an. wir versuchen hier ja nu wirklich browserübergreifende zufriedenheit zu erreichen, aber wenn jemand auf uns zukommt und sagt, "die seite stellt sich nicht richtig dar, ich benutze den ie aufm mac", dann geben wir ihm als einzigen tipp, einen anderen browser zu benutzen (safari etc.). vor allem was css angeht... puuuhhiii, das geht gar nicht aufm ie mac
                          Zuletzt geändert von arkos; 08.01.2007, 12:33.
                          **********
                          arkos
                          **********

                          Kommentar


                          • #14
                            so, nochmals an alle meinen besten dank. klappt prima.
                            da mir noch eine kleine änderung vorschwebt, eine letzte frage: gibt es zu den ersten zeile, die jahlives anwendet:

                            Mouse = {};
                            Mouse.doc = document;
                            Mouse.MouseMoveHandler

                            eine gute erklärung / referenzseite, die zeigt, was sonst noch mit den handler möglich ist, bzw. welche möglich sind?

                            danke und mahlzeit
                            **********
                            arkos
                            **********

                            Kommentar


                            • #15
                              Original geschrieben von arkos
                              gibt es zu den ersten zeile, die jahlives anwendet:

                              Mouse = {};
                              Mouse.doc = document;
                              Mouse.MouseMoveHandler = = function (e) { ... }

                              eine gute erklärung
                              Die erste Zeile legt ein neues Objekt namens Mouse an - geschweifte Klammern als Kurzschreibweise für das Anlegen eines Objektes.

                              Die zweite Zeile weisst der Objekteigenschaft doc die Referenz document zu, und die dritte ist analog - nur das hier das Zugewiesene eine Funtkionsreferenz ist, und MouseMoveHandler somit zu einer Methode dieses Objektes wird.


                              http://de.wikipedia.org/wiki/Javascr...der_Prototypen
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X