javascript mousetest



  • Hallo !

    kann mir jemand sagen, warum die Maus bei IE hängen bleibt (bitte nur mit IE testen) ?

    <html>
    <head>
    <title></title>
    <meta name="author" content="Katti">
    <meta name="generator" content="Microsoft FrontPage 4.0">
    <script language="JavaScript">
    
    /* Events definieren */
    var N = new Boolean();
    var posX = 0;
    var posY = 0;
    //Randwerte
    var mapTop = 0;
    var mapLeft = 0;
    var mapWidth = 0;
    var mapHeight = 0;
    
    N = document.all ? false : true   //ermitteln, welcher Browser
    
    function convertNumber(expr) { //entfernt eine Zeichenkette; bei dem 1. Buchstabe f() verlassen
       var temp = expr;
       for(var i = 0; i < expr.length; i++) {
          if(expr.charCodeAt(i) < 48 || expr.charCodeAt(i) > 57) {
             temp = expr.substr(0, i);
             break;
           }
       }
       return Number(temp);
    }
    
    function registry() {
      r = document.getElementById("rect");
      m = document.getElementById("map");
      if(r && m) {
        if(N) {
           m.addEventListener("mousedown", myMouseDown, true);
        } else {
           m.attachEvent("onmousedown", myMouseDown);
        }
      }
    //Randwerte der Landkarte ermitteln
    mapTop = convertNumber(m.style.top);
    mapLeft = convertNumber(m.style.left);
    mapWidth = convertNumber(m.style.width);
    mapHeight = convertNumber(m.style.height);
    }
    /* Events definieren */
    
    /* MouseDown - Position der Tabelle festlegen */
    function myMouseDown(e) {
    r = document.getElementById("rect");
       if(N) {
          document.addEventListener("mousemove", docMouseMove, true);
          document.addEventListener("mouseup", docMouseUp, true);
          posX = e.pageX;
          posY = e.pageY;
     //     return true;
       } else {
          document.attachEvent("onmousemove", docMouseMove);
          document.attachEvent("onmouseup", docMouseUp);
          e = event;
          posX = e.clientX;
          posY = e.clientY;
       }
    }
    
    function docMouseMove(e) {
       r = document.getElementById("rect");
       r.style.visibility = "visible";
       coordX = 0;
       coordY = 0;
       if(N) {
          coordX = e.pageX;
          coordY = e.pageY;
       } else {   //IE
          e = event;
          coordX = e.clientX;
          coordY = e.clientY;
       }
    
       if(coordX >= posX && coordY >= posY) {   //ok
          r.style.left = posX;
          r.style.top = posY;
          r.style.width = coordX - posX;
          r.style.height = coordY - posY;
       } else if(coordX <= posX && coordY >= posY) {   //ok
          r.style.left = coordX;
          r.style.top = posY;
          r.style.width = posX - coordX;
          r.style.height = coordY - posY;
       } else if(coordX >= posX && coordY < posY) {  //ok
          r.style.left = posX;
          r.style.top = coordY;
          r.style.width = coordX - posX;
          r.style.height = posY - coordY;
       } else if(coordX < posX && coordY <= posY) {  //ok
          r.style.left = coordX;
          r.style.top = coordY;
          r.style.width = posX - coordX;
          r.style.height = posY - coordY;
       }
    
       //Randwerte berücksichtigen
       if(e.clientX > mapWidth+mapLeft) r.style.width = mapWidth+mapLeft-posX;
       if(e.clientX < mapLeft) {r.style.width = posX-mapLeft; r.style.left = m.style.left;}
       if(e.clientY > mapHeight+mapTop) r.style.height = mapHeight+mapLeft-posY;
       if(e.clientY < mapTop) {r.style.height = posY-mapTop; r.style.top = m.style.top;}
    }
    
    function docMouseUp(e) {
       r = document.getElementById("rect");
       r.style.visibility = "hidden";
       if(N) {
          document.removeEventListener("mousemove", docMouseMove, true);
       } else {
          document.detachEvent("onmousemove", docMouseMove);
       }
       r.style.top = 0;
       r.style.left= 0;
       r.style.height=0;
       r.style.width=0;
     }
    </script>
    
    </head>
    
    <body onLoad="registry()" text="#000000" bgcolor="#FFFFFF">
    <div id="map" style="position:absolute;top:50px;left:50px;height:200px;width:200px;background:none;border:2px solid red;cursor:crosshair">
    <!--<input name="mapobj" type="image" action="#" src="planet.jpg">-->
    </div>
    
    <div id="rect" style="position:absolute;top:0px;left:0px;height:0px;width:0px;background:none;border:1px solid black"><!----></div>
    
    </body>
    </html>
    

    Danke !!!



  • Wo bleibt da bei dir die Maus hängen?



  • hi flenders,

    versuch mehr mal nacheinader die Maus zu ziehen ... es bleibt hängen ... irgendwann mal. Ich kenne das Problem, daher passiert mir das gleich.... Und da der User ein depp ist, muss es richtig funzen und deppensicher sein.

    Cu kati



  • hi,

    ich schätze das ist ein ie problem. unter irgendwelchen umständen ruft der ie die mousmove-funktion nicht mehr auf. du kannst es höchsens irgenwie ganz anders versuchen...

    lw



  • Das habe ich gefürchtet.


Anmelden zum Antworten