因为现在常用主流浏览器对W3C准的不完全遵守,导致了书写js脚本经常要专注兼容问题,这也是现在js框架流行的一个原因。而鼠标位置相对于document对象的获取更是其中的代表,那真是诸侯割剧,群雄逐鹿,相当的混乱呀。
     据俺查资料所知,能用的得到鼠标的属性有如下六大对:

1 clientX,clientY
2 layerX,layerY
3 offsetX,offsetY
4 pageX,pageY
5 screenX,screenY
6 x,y

如果说没得用令人头疼,那么有太多可用,那个又不好用就令人恼火了。但对于我等要靠coding来养家糊口的,没困难要上,有困难睁着通红的双眼也要上。
     开始分析之前,必须明确要获取的鼠标坐标是相对于document的,因为,js编程都是操作dom对象,所以得到document才有意义。下面开始分析解决之道。

首先,最好的情况下,老版本的Netscape提供了pageX和pageY这一对属性,并且得到的x,y坐标刚好是相对于document而言。所以对于这类情况,代码如此:

1  if(!e) var e = window.Event;
2  var x = e.pageX;
3  var y = e.pageY;

现在考虑不太理想的情况,对于不提供pageX和pageY的浏览器。它们大多支持clientX/Y属性,但都是相对于window的坐标值。所以要取得适合自己用的坐标还需要处理:

1   if(!e) var e = window.Event;
2   var x = e.clientX + document.documentElement.scrollLeft;
3   var y = e.clientY + document.documentElement.scrollTop;

综合两种情况,可以写一个兼容大多数主流浏览器的方法得到鼠标坐标:

1  if(!e) var e = window.Event;
2   var x = e.pageX ||(e.clientX?e.clientX+document.documentElement.scrollLeft:0);
3   var y = e.pageY ||(e.clientY?e.clientY+document.documentElement.scrollTop:0);

转载于:https://www.cnblogs.com/phonefans/archive/2008/09/03/1282758.html

如何取得事件中鼠标坐标相关推荐

  1. 获取IE与FF中鼠标坐标

    据资料显示,IE中获取鼠标坐标的事件属性有以下几个: clientX设置或获取鼠标指针位置相对于 窗口客户区域的x 坐标,其中客户区域不包括窗口自身的控件和滚动条. clientY设置或获取鼠标指针位 ...

  2. 获取鼠标在盒子中的坐标

    1.在盒子内点击,想要得到鼠标距离盒子左右的距离 想到鼠标事件,但是 并不是对于盒子而言的 2.首先得到鼠标在页面中的坐标(pageX.pageY) 3.其次得到盒子在页面中的距离 4.距离一减,就能 ...

  3. JavaScript--获取页面盒子中鼠标相对于盒子上、左边框的坐标

    分析: 外层边框是浏览器边框,内部盒子是页面的一个盒子,绿点是盒子中鼠标的位置.鼠标相对盒子边框的坐标=页面中(注意不是浏览器)鼠标坐标-盒子相对于浏览器边框的偏移量 第一步:求浏览器边框位置 x=e ...

  4. html如何设置滑轮效果,HTML中鼠标滚轮事件onmousewheel处理

    滚轮事件是不同浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法绑定DomMouseScroll事件,其他的浏览器滚轮事件 ...

  5. Windows下C/C++模拟鼠标点击,PC端没有鼠标设备也能够获取鼠标坐标、移动鼠标坐标、模拟鼠标点击事件,方法一 亲测有效

    ------- [ 转载请保留 ] ------- 作者:西_瓜_瓜 博客:https://blog.csdn.net/xi_gua_gua/article/details/105773298 --- ...

  6. html中的鼠标事件怎么写,html5中的鼠标事件以及鼠标事件属性

    鼠标事件 先列出html5中鼠标常见的一系列事件: 事件名称 描述 onclick 当单击鼠标时运行脚本 ondblclick 当双击鼠标时运行脚本 ondrag 当拖动元素时运行脚本 ondrage ...

  7. ArcEngine的鼠标事件中按键判断~

    我们都知道,在.Net的鼠标事件中判断鼠标事件方法如下(以button为例): Private Sub Button1_MouseDown(ByVal sender As System.Object, ...

  8. tkinter中鼠标与键盘事件

    tkinter中鼠标与键盘事件(十五) 本文转自Tynam Yang的博客园 import tkinterwuya = tkinter.Tk() wuya.title("wuya" ...

  9. java 中鼠标事件_[Java教程]js中鼠标事件总结

    [Java教程]js中鼠标事件总结 0 2017-07-11 00:00:19 js中鼠标事件主要有onclick,onmousedown,onmouseup,oncontextmenu,ondblc ...

最新文章

  1. smtplib python教程_python使用smtplib模块发送邮件
  2. js 正则表达式 取反
  3. 【287】◀▶ arcpy 常用类说明
  4. 如何修改TextView链接点击实现(包含链接生成与点击原理分析)
  5. hbuilderx的快捷键整理pdf_mac键盘快捷键详解,苹果电脑键盘快捷键图文教程
  6. AOSP6.0.1 系统中增加新的category类型与app绑定,并在hotseat容器中加载app
  7. Linux内存管理:CMA(连续内存分配)(DMA)
  8. style文件的指定
  9. matlab 生成连续信号,Matlab的连续信号生成及时频域分析
  10. 计算机科学与技术专业大学排名2020,2020计算机科学与技术专业最好大学排名:160余所大学上榜...
  11. 怎样学好python编程-怎样学习python编程?
  12. 走迷宫(三):在XX限制条件下,是否走得出。
  13. 品牌类软文经典案例分享,深刻了解软文营销的“魅力”
  14. 评价的等级优良差_老师问:小学考试用优良等级评价,可取吗?
  15. CAD中插入外部参照字体会变繁体_CAD发给客户没字体怎么办?快速打包外部参照、字体、打印样式...
  16. 开源)嗨,Java,你可以生成金山词霸的二维码分享海报吗?
  17. 赛马问题--最全面的解析
  18. liunx 中文乱码 和 html转图片中文乱码问题处理方式以及linux中文字体包
  19. 用ruby实现latex自动编译
  20. 2021-07-02-MySQL必知必会-笔记

热门文章

  1. python 折线图_Python 编程一次画三种图:柱状图、散点图、折线图
  2. MATLAB学习笔记(十五)
  3. c#打开数据库连接池的工作机制_它是谁?一个比 c3p0 快 200 倍的数据库连接池!...
  4. VMware安装Linux(CentOS7)
  5. 5-9轻量型网络结构
  6. 数据科学入门与实战:Matplotlib绘图DateFrame
  7. onu光功率多少是正常_ONU、机顶盒、路由器常见网络问题及处理方法
  8. cad页面布局快捷键_炸裂“图纸集”功能、高手都在偷偷用的CAD图纸管理神器
  9. python spark社区_Spark中文python文档
  10. java匿名内部对象_JavaSE 学习参考:匿名内部类和匿名对象