javascript获得表针位置的办法

lxf2023-02-19 10:29:32

javascript获得表针位置的办法:应用事件对象的pageX和pageY,或是clientX和clientY特性,而且相互配合scrollLeft和scrollTop特性,这样就能算出表针位置了。

javascript获得表针位置的办法

文中作业环境:windows10系统软件、javascript 1.8.5、thinkpad t480计算机。

若想获得表针在网页页面中的地位,可以用事件对象的pageX和pageY,或者 clientX 和 clientY(适配 IE)特性,同时还需要相互配合 scrollLeft 和 scrollTop 特性,这样就能算出鼠标箭头在网页页面中的地位了。

//获得鼠标箭头页面部位
//主要参数:e表明现阶段事件对象
//传参:回到电脑鼠标相对性界面的座标,目标文件格式(x,y)
function getMP (e) {
    var e = e || window.event;
    return {
        x : e.pageX || e.clientX   (document.documentElement.scrollLeft || document.body.scrollLeft),
        y : e.pageY || e.clientY   (document.documentElement.scrollTop || document.body.scrollTop)
    }
}

pageX 和 pageY 事情特性不会被 IE 浏览器支持,而 clientX 和 clientY 事情特性又不会被 Safari 浏览器支持,所以可以混合使用他们以适配不一样电脑浏览器。针对古怪方式而言,body 原素意味着网页页面地区,而 html 原素被掩藏,可是标准模式以 html 原素意味着网页页面地区,而 body 原素仅仅是一个单独的页面元素,因此需要适配这几种分析方法

下边实例演示了怎样启用上边扩展函数 getMP() 捕捉现阶段鼠标箭头在文本文档中的地位。

<body style="width:2000px;height:2000px;">
    <textarea id="t" cols="15" rows="4" style="position:fixed;left:50px;top:50px;"></textarea>
</body>
<script>
    var t = document.getElementById("t");
    document.onmousemove = function(e){
        var m = getMP(e);
        t.value ="mouseX = "   m.x    "\n"   "mouseY = "   m.y
    }
</script>

演试实际效果如下所示:

javascript获得表针位置的办法

获得表针的位置关系

应用 offsetX 和 offsetY 或是 layerX 和 layerY 可以获得鼠标箭头相对定位包括框的偏位部位。如果采用 offsetLeft 和 offsetTop 特性获取元素在精准定位包括框里的偏位座标,然后使用 layerx 基础属性减掉 offsetLeft 基础属性,应用 layery 基础属性减掉 offsetTop 基础属性,就可以获得鼠标箭头在原素内部部位。

//获得鼠标箭头在原素里的部位
//主要参数:e表明现阶段事件对象,o表明现阶段原素
//传参:回到相对坐标目标
function getME (e, o) {
    var e = e || window.event;
    return {
        x : e.offsetX || (e.layerX - o.offsetLeft),
        y : e.offsetY || (e.layerY - o.offsetTop)
    }
}

结合实际上边函数公式存有下列几个问题:

  • Mozilla 种类和 Safari 电脑浏览器以原素外框表面的左上方为参照点。

  • 其他浏览器则以原素外框内腔的左上方为坐标原点。

充分考虑外框对鼠标位置产生的影响,当原素外框比较宽时,一定要考虑怎么消除外框针对鼠标位置产生的影响。可是,因为外框款式不一样,它存有 3 像素的默认设置总宽,为获取元素的外框具体总宽增添了不便。必须设定更多标准,来判定现阶段元素外框总宽。

实例

健全后获得鼠标箭头在原素里的部位扩展函数如下所示:

//健全获得鼠标箭头在原素里的部位
//主要参数:e表明现阶段事件对象,o表明现阶段原素
//传参:回到电脑鼠标相对性元素经纬坐标,在其中x表明x轴偏位间距,y表明y轴偏位间距
function getME(e, o){
    var e = e || window.event;
    //获取元素左边外框的宽度
    //启用getStyle()扩展函数获得外框款式值,并尝试转换成标值,假如变换取得成功,则取值。
    //不然确定是否定义了外框款式,假如界定外框款式,且值不以none,则表明外框宽度为初始值,即是3清晰度。
    //要是没有界定外框款式,且总宽数值auto,则表明外框宽度为0
    var bl = parseInt(getStyle(o, "borderLeftWidth")) || ((o.style.borderLeftStyle && o.style.borderLeftStyle != "none" )? 3 : 0);
    //获取元素顶端外框的宽度,设计理念与获得左边外框方式同样
    var bt = parseInt(getStyle(o, "borderTopWidth")) || ((o.style.borderTopStyle && o.style.borderTopStyle !="none" ) ? 3 : 0);
    var x = e.offsetX || (e.layerX - o.offsetLeft - bl);  // 一般浏览器下电脑鼠标偏移值
    //适配Mozilla种类电脑浏览器,减掉外框总宽 
    var y = e.offsetY || (e.layerY - o.offsetTop - bt); // 一般浏览器下电脑鼠标偏移值 
    //适配Mozilla种类电脑浏览器,减掉外框总宽 
    var u = navigator.userAgent; // 获得浏览器用户信息 
    if( (u.indexOf("KHTML") > - 1) ||(u.indexOf("Konqueror") > - 1) || (u.indexOf("AppleWebKit") > - 1) 
    ){ // 假如是Safari电脑浏览器,则减掉外框产生的影响 
        x -= bl; y -= bt; 
    } return { // 回到适配不一样浏览器鼠标位置目标,以原素外框内腔左上方为精准定位起点 
        x : x, y : y 
    }   
}

演试实际效果如下所示:

javascript获得表针位置的办法

强烈推荐学习培训:javascript视频教学

以上就是关于javascript怎样获得表针位置的具体内容,大量欢迎关注AdminJS其他类似文章!