javascript - 使用 JavaScript 显示鼠标 x 和 y 位置

标签 javascript dom-events onmousemove

第一个版本没有显示 x 和 y 并得到以下错误:

Uncaught TypeError: Cannot read property 'pageX' of undefined


第二个版本有效,但编码非常相似,找不到问题。
第一个版本(不工作)
    <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> 
第二版(工作)
      <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>     

最佳答案

第一眼: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

关于javascript - 使用 JavaScript 显示鼠标 x 和 y 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202118/

相关文章:

javascript - ng-submit 使用工厂函数?

javascript - WKWebview如何设置比例尺?

javascript - 为什么我应该使用事件委托(delegate)而不是 queryselectorAll

javascript - HTML 页面中的 Javascript 事件循环何时触发?

javascript - 如何在AngularJS中使用$event获取子元素值?

javascript - Canvas 世界到屏幕的卡顿

firefox - &lt;input type ='textarea' onmousemove ='toscheck()'/> 不仅在 Firefox 上有效

javascript - JavaScript 中的随机冒号是什么意思

javascript - react native android错误404

javascript - 网络套件中的错误? Windows Media Player 运行时鼠标移动事件连续触发