`
gk23
  • 浏览: 173162 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用 javascript 获取当页面上鼠标(光标)位置

阅读更多

用 javascript 获取当页面上鼠标(光标)位置在许多情况下都会用到,比如拖放,悬停提示(tooltip) 等等。当然,这里我们依然要面对浏览器的兼容问题,在不同的浏览器下,对这些相关的属性处理方式也不同,本文详细介绍了浏览器在处理这些属性时的差异和最终的解决方法。 


--------------------------------------------------------------
点此浏览示例文件
--------------------------------------------------------------


Javascript:

  1.  
  2. <script type="text/javascript">
  3.  
  4. // 说明:获取鼠标位置
  5. // 整理:http://www.codebit.cn
  6. // 来源:http://www.webreference.com
  7.  
  8. function mousePosition(ev){
  9. if(ev.pageX || ev.pageY){
  10. return {x:ev.pageX, y:ev.pageY};
  11. }
  12. return {
  13. x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
  14. y:ev.clientY + document.body.scrollTop - document.body.clientTop
  15. };
  16. }
  17.  
  18. </script>
  19.  




上面的代码我们在  怎么用 javascript 实现拖拽 中已经介绍过了,由于这个需求我们经常用到,所以我们将这段代码独立成一篇文章,供新手查询。

使用方式:
Code:



document.onmousemove = mouseMove;

function mouseMove(ev){
    ev = ev || window.event;
    var mousePos = mousePosition(ev);




关于代码的详细说明,原文中已经介绍,现转到此处:

我们首先要声明一个  evnet 对象,无论移动、点击、按键等,都会激活一个 evnet ,在 Internet Explorer 里,  event 是全局变量,会被存储在 window.event 里. 在 firefox 或者其他浏览器,event 会被相应的函数获取.当我们将mouseMove函数赋值于document.onmousemove,mouseMove 会获取鼠标移动事件。

为了让 ev 在所有浏览器下获取了 event 事件,在Firefox下"||window.event"将不起作用,因为ev已经有了赋值。在 MSIE 中 ev 为空,所以得到 window.event 。

因为在这篇文章中我们需要多次获取鼠标位置,所以我们设计了一个 mousePosition 函数,它包含一个参数 : event 。

因为我们要在 MSIE 和其他浏览器下运行,Firefox 和其他浏览器用 event.pageX 和 event.pageY 来表示鼠标相对于文档的位置,如果你有一个 500*500 的窗口并且你的鼠标在绝对中间,那么 pageX 和 pageY  的值都是 250,如果你向下滚动  500, 那么 pageY 将变成 750。

MSIE 正好相反,它使用 event.clientX 和 event.clientY 表示鼠标相当于窗口的位置,而不是文档。在同样的例子中,如果你向下滚动500,clientY 依然是 250,因此,我们需要添加 scrollLeft 和 scrollTop 这两个相对于文档的属性。最后,MSIE 中文档并不是从 0,0 开始,而是通常有一个小的边框(通常是 2 象素),边框的大小定义在  document.body.clientLeft 和 clientTop 中,我们也把这些加进去。

很幸运,我们现在已经用 mousePosition 函数解决了坐标问题,不需为此费心了。

分享到:
评论

相关推荐

    用javascript获取当页面上鼠标光标位置和触发事件的对象的代码

    用 javascript 获取当页面上鼠标(光标)位置 和 触发事件的对象 的方法

    使用TextRange获取输入框中光标的位置的代码

    下面是一个使用JavaScript获取输入框中光标的位置的代码: ```javascript function GetCursorPsn(txb) { var slct = document.selection; var rng = slct.createRange(); txb.select(); rng.setEndPoint(...

    在页面中js获取光标/鼠标的坐标及光标的像素坐标

    页面JS光标/鼠标坐标,百度统计中有个热点统计图,我们要做的就是获取光标的像素坐标

    js获取鼠标位置实例详解

    用 javascript 获取当前页面上鼠标(光标)位置在许多情况下都会用到,比如拖放,悬停提示(tooltip) 等等。当然,这里我们依然要面对浏览器的兼容问题,在不同的浏览器下,对这些相关的属性处理方式也不同,这里...

    程序天下:JavaScript实例自学手册

    21.7 使用DOM获取页面中某控件的属性 21.8 将某行排在表格的最后 21.9 动态删除页面中的元素 21.10 克隆表格 21.11 拖动表格行改变顺序 21.12 表格操作常用方法 第22章 流行应用:AJAX和Property的应用技巧 22.1 ...

    《程序天下:JavaScript实例自学手册》光盘源码

    21.7 使用DOM获取页面中某控件的属性 21.8 将某行排在表格的最后 21.9 动态删除页面中的元素 21.10 克隆表格 21.11 拖动表格行改变顺序 21.12 表格操作常用方法 第22章 流行应用:AJAX和Property的应用技巧 22.1 ...

    【JavaScript源代码】JavaScript实现浏览器网页自动滚动并点击的示例代码.docx

    JavaScript实现浏览器网页自动滚动并点击的示例代码  1. 打开浏览器控制台窗口 ...2. 实时查看鼠标坐标 首先为了获取当前的鼠标位置的x、y坐标,需要先重写一个onmousemove函数来帮助我们实时查看光标处的x、

    JavaScript网页特效范例宝典源码

    实例180 获取页面中的全部超级链接 281 实例181 将网站设为首页 282 实例182 单击鼠标右键自动链接到指定网站 283 实例183 单击超级链接将本页加入收藏夹 285 实例184 访问指定的链接地址 286 实例185 返回默认主页 ...

    javaScript常用事件

    常用javaScript事件归纳。 常用事件: 1.onclick 鼠标单击事件 通常在下列基本对象中产生: button(按钮对象) checkbox(复选框)或(检查列表框) radio (单选钮) reset buttons(重要按钮) submit ...

    javascript网页特效实例大全(13-19)

    实例355 用JavaScript控制XML文档的分页显示 565 实例356 通过操作XML数据岛实现添加、删除留言信息 567 第15章 JavaScript与ASP结合 573 15.1 弹出窗口/对话框控制 574 实例357 关闭弹出窗口时刷新父窗口...

    JavaScript写的文本转语音,自动朗读工具源码.zip

    文本框使用 textarea 标签,通过 textarea 的光标事件获取鼠标光标定位的设置的朗读起点,具体参考 MDN 通过网页语音 API 实现朗读,具体参考 SpeechSynthesis JavaScript写的文本转语音,自动朗读工具...

    pet_cursor.js:宠物光标(Neko光标)是一个简单JavaScript文件,可将您网站的光标变成可爱的动画宠物! (对于台式机)

    pet_cursor.js 宠物光标(Neko光标)是一个简单JavaScript文件,可将您网站的光标变成可爱的动画宠物! (对于台式机) 现在,您的桌面访问者可以在浏览您的网站时扮演可爱的角色! 默认角色基于,您可以使用此默认...

    javascript与CSS复习(三)

    我们先来看看如何获取光标相对于整个页面的位置,因为光标位置变量x,y一般通过鼠标事件获取(如mousemove或者mousedown),下面两个通用函数,用于获取光标相对于整个页面的当前位置。 代码如下://获取光标的水平位置...

    DhtmlxTree-dhtmlxmenu实现在节点上右键弹出菜单

    c、用 javascript 获取当页面上鼠标(光标)位置 &lt;script type="text/javascript"&gt; // 说明:获取鼠标位置 function mousePosition(ev){ if(ev.pageX || ev.pageY){ return {x:ev.pageX, y:ev.pageY};...

    javascript网页特效实例大全(8-12)

    实例221 当鼠标经过图片时显示图片 344 实例222 改变图片获取焦点时的状态 345 实例223 抖动的图片 346 实例224 鼠标移动放大图片 347 8.3 图片与时间相关操作 349 实例225 定时隐藏图片 349 实例226 ...

    AutoIT自动化测试进阶(自动化测试框架实例:图表数据采集)归纳.pdf

    方案一是使用 AutoIT 的 MouseMove 方法在图表上移动鼠标光标,触发页面的 MouseOver 事件,并获取产生的 Tooltip 对象及节点中的数据。这个方案需要计算条形或者折线 Dom 元素对象所在的位置,以便使用 MouseMove ...

    JavaScript实现浏览器网页自动滚动并点击的示例代码

    1. 打开浏览器控制台窗口 ...首先为了获取当前的鼠标位置的x、y坐标,需要先重写一个onmousemove函数来帮助我们实时查看光标处的x、y值,方便下一步编写代码时确定初始的y坐标和每次y方向滚动的距离 /

    超实用的jQuery代码段

    6.9 拖动时动态更改鼠标的光标类型和位置 6.10 拖曳并放置到目标容器 6.11 限制可放置的元素 6.12 实现可拖放的购物车 6.13 可排序的拖放 6.14 在多个列表之间进行拖放 6.15 使用拖动方式选择多个元素 6.16 在两个...

    处理文本部分内容的TextRange对象应用实例

    TextRange的传统用途是对用户在Web页上用鼠标圈选的文字内容的操作,比如变化、删除、新增等。但其经典的用途却是,在Web页面中查找文字(这个比较简单)和获取输入框光标的位置。其中后者又有可以衍生出很多更有用的...

Global site tag (gtag.js) - Google Analytics