最简单的方法,供事件中获取事件触发时的鼠标位置的方法:
function xxx(e){
e= e || window.event;
var movex=e.pageX;
var movey=e.pageY;
}
//var movex=event.pageX;
//var movey=event.pageY;
简单点的方法就是定义两个全局变量接受鼠标的x和y坐标,让后定义一个方法在获取有效的事件对象后将鼠标坐标赋给定义好的全局变量,然后将这个方法赋给document.onmouseover事件:
var movex; var movey; //用来接受鼠标位置的全局变量
function mousemove(e)
{
e=e || window.event;
if(e.pageX || e.pageY)
{
movex=e.pageX;
movey=e.pageY
}
}
document.onmousemove=mousemove;
onmousemove 事件会在鼠标指针移动时发生。
onmousemove="SomeJavaScriptCode"
参数 | 描述 |
SomeJavaScriptCode | 必需。规定该事件发生时执行的 JavaScript。 |
获取有效的时间对象
这句话的目的是照顾到浏览器的兼容性,不同的浏览器解释js代码的方式不同,这句话将触发的事件对象赋予e这个变量,在ie中事件对象定义为window.event,
而在其他一些浏览器,该对象需要作为参数传入(在W3C标准支持的浏览器下事件对向是引发事件涵数的第一个参数),即_e,传入的时候传event,见下面的代码。
e=e || window.event;
你去掉这句话在ie下依然可以的原因是 event == window.event,所有对象都是window对象的属性,所以加不加ie浏览器都能认出来。
可获取的鼠标坐标有以下几种:
1.PageX/PageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化
2.clientX/clientY:鼠标在页面上可视区域的位置,从浏览器可视区域左上角开始,即是以浏览器滑动条此刻的滑动到的位置为参考点,随滑动条移动 而变化.
可是悲剧的是,PageX在ie下没有(???)
3.screenX/screenY:鼠标在屏幕上的位置,从屏幕左上角开始(w3c标准)
4.offsetX/offsetY:IE特有,鼠标相比较于触发事件的元素的位置,以元素盒子模型的内容区域的左上角为参考点,如果有boder,可能出现负值
5.layerX/layerY:FF特有(???),鼠标相比较于当前坐标系的位置,即如果触发元素没有设置绝对定位或相对定位,以页面为参考点,如果有,将改变参考坐标系,从触发元素盒子模型的border区域的 左上角为参考点也就是当触发元素设置了相对或者绝对定位后,layerX和offsetX就幸福地生活在一起^-^,几乎相等,唯一不同就是一个从border为参考点,一个以内容为参考点
chrome和safari一条龙通杀!完全支持所有属性.其中(offsetX和layerX都是以border为参考点)
(ie11和edge应该不会这么悲剧吧!)
Event 对象
Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。