• 鼠标指针定位解析及兼容性方法


    当事件发生时,获取鼠标指针的位置是很重要的事件。这原本是一个很简单的问题,但是由于浏览器的不兼容性,给开发带来了挑战。不同浏览器分别在各自事件对象中定义了不同的属性,详见下方图表。

    属性 说明   兼容性
    clientX 浏览器窗口左上顶角为原点,定位X轴坐标 所有浏览器,不兼容Safari
    clientY 浏览器窗口左上顶角为原点,定位Y轴坐标 所有浏览器,不兼容Safari
    offsetX 当前事件的目标对象左上顶角为原点,定位X轴坐标 所有浏览器,不兼容Mozilla
    offsetY 当前事件的目标对象左上顶角为原点,定位Y轴坐标 所有浏览器,不兼容Mozilla
    pageX document对象(即文档窗口)左上顶角为原点,定位X轴坐标 所有浏览器,不兼容IE
    pageY document对象(即文档窗口)左上顶角为原点,定位Y轴坐标 所有浏览器,不兼容IE
    screenX 计算机屏幕左上角为原点,定位X轴坐标 所有浏览器
    screenY 计算机屏幕左上角为原点,定位Y轴坐标 所有浏览器
    layerX 最近的绝对定位的父元素(如果没有,则为document对象)左上顶角为原点,定位X轴坐标 Mozilla 和 Safari
    layerY 最近的绝对定位的父元素(如果没有,则为document对象)左上顶角为原点,定位Y轴坐标  Mozilla 和 Safari

    兼容不同浏览器的鼠标定位设计方案:

    function getMousePos(event){
        var posX = 0,posY = 0;                        //定义坐标变量初始化
        var event = event || window.event;            //标准化事件对象
        if(event.pageX || event.pageY){               //如果浏览器支持该属性,则采用
            posX = event.pageX;
            posY = event.pageY;        
        }else if(event.clientX || event.clientY){     //否则,如果浏览器支持该属性,则采用
            posX = event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
            posY = event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
        };
        return {
            posX : posX,
            posY : posY
        };
    }

    HTML页面调用方法:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>兼容不同浏览器的鼠标定位方法</title>
        <script src="js/mousePos.js"></script>
        <script>
            document.onmousemove = function(event){
                console.log('鼠标X轴坐标值:' + getMousePos(event).posX + '鼠标Y轴坐标值:' + getMousePos(event).posY);
            }
        </script>
    </head>
    <body>
        <p>兼容不同浏览器的鼠标定位方法</p>
    </body>
    </html>
  • 相关阅读:
    Sencha touch 初体验
    Android开发——NDK开发入门
    Android开发——Activity(活动)的生命周期(上)
    Android开发——构建自定义组件【转】
    Android开发——使用Gallery实现“多级联动”
    Android开发——Android搜索框架(一)
    LINQ之路 6:延迟执行(Deferred Execution)
    .Net小笔记之.NET Framework的内容
    c#高级编程学习笔记之创建一个简化的链表类
    C#高级编程读书笔记之泛型的优点
  • 原文地址:https://www.cnblogs.com/lvmylife/p/5368727.html
Copyright © 2020-2023  润新知