9

最初のバージョンではxとyが表示されず、次のエラーが発生します。

Uncaught TypeError:未定義のプロパティ'pageX'を読み取ることができません

2番目のバージョンは機能しますが、非常によく似たコードであり、問​​題を見つけることができません。

最初のバージョン(機能していません)

    <form name ="show">
        <input type="text" name="mouseXField" value="0" size="6">Mouse X Position<br>
        <input type="text" name="mouseYField" value="0" size="6">Mouse Y Position<br>
    </form>
        
        <script type="text/javascript">
        
        var mie = (navigator.appName == "Microsoft Internet Explorer") ? true : false;
        
        if (!mie) {                
            document.captureEvents(Event.MOUSEMOVE);
            document.captureEvents(Event.MOUSEDOWN);
        }
                    
        document.onmousemove = mousePos();
        document.onmousedown = mouseClicked();
        
        var mouseClick;
        var keyClicked;
        
        var mouseX = 0;
        var mouseY = 0;
        
        function mousePos (e) {                
            if (!mie) {
                mouseX = e.pageX; 
                mouseY = e.pageY;
            }
            else
                mouseX = event.clientX + document.body.scrollLeft;
                mouseY = event.clientX + document.body.scrollTop;
                   
        document.show.mouseXField.value = mouseX;
        document.show.mouseYField.value = mouseY;
        
        return true;
        }
        
        </script> 

2番目のバージョン(動作中)

      <form name="Show">
            <input type="text" name="MouseX" value="0" size="4"> X<br>
            <input type="text" name="MouseY" value="0" size="4"> Y<br>
      </form>

        <script type="text/javascript">

            var IE = document.all?true:false

            if (!IE) document.captureEvents(Event.MOUSEMOVE)

            document.onmousemove = getMouseXY;

            var tempX = 0
            var tempY = 0

            function getMouseXY(e) {
                if (IE) {       
                tempX = event.clientX + document.body.scrollLeft
                tempY = event.clientY + document.body.scrollTop
                } 
                else 
                {  
                 tempX = e.pageX
                 tempY = e.pageY
                }  

                document.Show.MouseX.value = tempX
                document.Show.MouseY.value = tempY

                return true
                }
        </script>     
4

2 に答える 2

18

一見したところ:あなたの中にclientXあるべきでclientYあり、欠けているはずです:{}else

else {
   mouseX = event.clientX + document.body.scrollLeft;
   mouseY = event.clientY + document.body.scrollTop;
}

また、イベントを関数に送信する必要があります。

document.onmousemove = function (e) {mousePos(e);};
...
function mousePos (e) {
...

これをチェックしてください:http://jsfiddle.net/NLsdZ/1/

また、の使用captureEventsは非推奨ですaddEventListener。代わりに使用する必要があります。詳細はこちら: http: //forums.asp.net/t/1576872.aspx

于 2012-08-30T17:22:17.217 に答える
0

私はまた、あなたが以下に負荷をかけていないこと、または少なくともあなたがそうであると述べていることに気づきました。

var mie = (navigator.appName == "Microsoft Internet Explorer") ? true : false;

    if (!mie) {

        document.captureEvents(Event.MOUSEMOVE);
        document.captureEvents(Event.MOUSEDOWN);
    }


    document.onmousemove = mousePos();
    document.onmousedown = mouseClicked();

次のように/または最終的に私のために働いたはずです:

 window.onload = function () {
         mie = (navigator.appName == "Microsoft Internet Explorer") ? true : false;


    if (!mie) {
         document.captureEvents(Event.MOUSEMOVE);
         document.captureEvents(Event.MOUSEDOWN);
    }
         document.onmousemove = function (e) {mousePos(e);};
         document.onmousedown = function (e) {mouseClicked();};
 };
于 2013-07-11T06:01:24.043 に答える