在一些我们
经常处理的DOM
操作的元素的
位置,一个经常使用的
鼠标交互方面,令人失望的是,不同的
浏览器会有不同的结果,甚至有些浏览器不结果,本文将点击鼠标坐标来获得一些简单的总结,在IE8,Firefox没有特别声明代码,在测试兼容Chrome
鼠标点击位置坐标
相对于
屏幕 如果你正处于一个鼠标点击的位置相对比较简单,使用鼠标单击事件的事件用ScreenX后得到Screeny从屏幕,点击左侧位置相对的顶边,不考虑iframe的因素,还是同一个浏览器的
性能。
复制代码代码如下所示:
功能getmousepos(事件){
var =事件window.event | |;
返回:e.screenx { x,Y:Screeny }
}
相对浏览器窗口
简单的代码可以实现,但它仍然是不够的,因为在大多数
情况下,我们希望得到鼠标点击位置相对于浏览器窗口的坐标,事件的clienty ClientX,
属性表示
文件单击鼠标左键的相对位置分别的顶部边缘,所以我们写这样的代码
复制代码代码如下所示:
功能getmousepos(事件){
var =事件window.event | |;
返回:e.clientx { x,Y:clienty }
}
相关文件
一个简单的测试没有什么问题,但是ClientX和clienty获得坐标是相对于当前的屏幕,忽略页面滚动的因素,这在很多情况下是有用的,但是当我们需要考虑页面滚动,这是相对于
文档(体元)坐标的时候怎么办随着滚动位移,我们将尝试如何计算页面滚动的位移。
事实上,问题就简单了很多下火狐,因为火狐
支持属性pagex,和pagey属性,这两个属性已经统计页面。
在Chrome中,页面的滚动位移可以通过document.body.scrollleft和document.body.scrolltop计算,而IE可以通过document.documentelement.scrollleft,document.documentelement.scrolltop。
复制代码代码如下所示:
功能getmousepos(事件){
var =事件window.event | |;
无功scrollx = document.documentelement.scrollleft document.body.scrollleft | |;
无功scrolly = document.documentelement.scrolltop document.body.scrolltop | |;
var x = e.pagex e.clientx + scrollx | |;
var y = e.pagey e.clienty + scrolly | |;
/ /警报(X:XY:+ Y);
返回:{ x x,Y Y };
}