javascript获得表针位置的办法:应用事件对象的pageX和pageY,或是clientX和clientY特性,而且相互配合scrollLeft和scrollTop特性,这样就能算出表针位置了。
文中作业环境: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>
演试实际效果如下所示:
获得表针的位置关系
应用 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怎样获得表针位置的具体内容,大量欢迎关注AdminJS其他类似文章!