返回顶部
首页 > 资讯 > 前端开发 > JavaScript >教你javascript如何获取指针的位置
  • 653
分享到

教你javascript如何获取指针的位置

2024-04-02 19:04:59 653人浏览 独家记忆
摘要

javascript获取指针的位置的方法:使用事件对象的pageX和pageY,或者clientX和clientY属性,并且配合scrollLeft和scrollTop属性,这样就可

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获取指针的位置的文章就介绍到这了,更多相关js指针的位置内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 教你javascript如何获取指针的位置

本文链接: https://lsjlt.com/news/155391.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 教你javascript如何获取指针的位置
    javascript获取指针的位置的方法:使用事件对象的pageX和pageY,或者clientX和clientY属性,并且配合scrollLeft和scrollTop属性,这样就可...
    99+
    2024-04-02
  • 如何用javascript获取指针的位置
    本篇内容介绍了“如何用javascript获取指针的位置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • javascript如何获取鼠标位置
    这篇文章主要介绍“javascript如何获取鼠标位置”,在日常操作中,相信很多人在javascript如何获取鼠标位置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java...
    99+
    2024-04-02
  • 在javascript中如何快速获取数组指定位置的元素
    目录前言数组的 at() 方法前言 在 JavaScript 中如果我们需要获取一个数组指定位置的元素,通常情况下,我们一般采用以下方法: 1.通过下标直接获取指定元素:arr[in...
    99+
    2023-05-17
    js获取数组指定位置的元素 js获取数组元素
  • 如何用JavaScript获取页面元素的位置
    本篇内容主要讲解“如何用JavaScript获取页面元素的位置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用JavaScript获取页面元素的位置”吧!1...
    99+
    2024-04-02
  • R语言 如何获取指定位置的数据
    R语言-获取指定位置的数据 R中采用数据对象+[ , ]的方式获取对应位置的数据,根据填入索引参数的不同类型可具体分为: 正整数、负整数、零、空格、逻辑值、名称 > ma...
    99+
    2024-04-02
  • lua如何获取字符串指定位置的字符
    在Lua中,可以通过字符串的索引来获取指定位置的字符。字符串的索引是从1开始的。例如: local str = "hell...
    99+
    2024-04-08
    lua
  • javascript怎么获取滚动条的位置
    本篇内容介绍了“javascript怎么获取滚动条的位置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • jQuery如何获取鼠标位置
    这篇文章给大家分享的是有关jQuery如何获取鼠标位置的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。获取鼠标位置<script type="text/j...
    99+
    2024-04-02
  • jQuery如何获取元素位置?
    ...
    99+
    2024-04-02
  • jQuery如何获取鼠标位置?
    这篇文章将为大家详细讲解有关jQuery如何获取鼠标位置?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jQuery获取鼠标位置 简介 jQuery是用于简化网页开发的流行JavaScript库。它提供了...
    99+
    2024-04-02
  • jquery如何获取设置元素位置
    本篇内容主要讲解“jquery如何获取设置元素位置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery如何获取设置元素位置”吧!一、获取元素位置offset()方法offset()方法返回...
    99+
    2023-07-06
  • 手拉手教你如何理解c/c++中的指针
    目录前言一,内存和地址二,指针的本质就是地址三,常量指针与指针常量四,指针与数组五,数组指针与指针数组六,指针函数与函数指针总结前言 指针是c语言为什么如此流行的一个重要原因,正是有...
    99+
    2024-04-02
  • jQuery如何获取滚动条位置?
    这篇文章将为大家详细讲解有关jQuery如何获取滚动条位置?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jQuery 获取滚动条位置 jQuery 库提供多种方法来获取当前页面滚动条的位置,适用于不同浏...
    99+
    2024-04-02
  • oracle怎么获取指定字符串的位置
    在Oracle中,您可以使用INSTR函数来获取指定字符串在另一个字符串中的位置。语法如下: INSTR(string1, stri...
    99+
    2024-04-17
    oracle
  • 教你如何轻松学会Java快慢指针法
    目录一、什么是快慢指针?二、使用快慢指针来找到链表的中点三、利用快慢指针来判断链表中是否有环四、删除链表的倒数第n个节点五、判断是否是回文链表一、什么是快慢指针? 快慢指针就是定义两...
    99+
    2024-04-02
  • Javascript中怎么获取页面元素的位置
    这篇文章给大家介绍Javascript中怎么获取页面元素的位置,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、网页的大小和浏览器窗口的大小首先,要明确两个基本概念。一张网页的全部面积...
    99+
    2024-04-02
  • 如何使用phonegap获取位置信息
    这篇文章主要介绍如何使用phonegap获取位置信息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实例如下:<!DOCTYPE html>  <...
    99+
    2024-04-02
  • 教你如何使用 JavaScript 读取文件
    目录使用 JavaScript 读取文件概述选择带有输入元素的文件处理输入元素的变化事件从输入元素的 files 属性中获取一个 File 对象使用 FileReader 读取 Fi...
    99+
    2024-04-02
  • Golang 指针混淆,如何从函数获取指针,然后传递给修改函数
    问题内容 我想使用库(golang walk声明式),它希望我传递一个指针变量,并且库稍后将用一个实例填充它。 出于簿记目的,我尝试创建一个函数来返回引用并进一步传递它,但在原始函数中...
    99+
    2024-02-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作