在火狐浏览器中获取鼠标位置

最近项目中需要使用 js 获取鼠标位置,本以为十分简单,直接返回 clientX 和 clientY 不就完了么

结果实际开发的时候,在火狐浏览器中遇到了兼容性问题,这里就和大家分享一下

 

一、获取鼠标的位置

如果只考虑谷歌浏览器,直接获取 window.event 的 clientX 和 clientY,是最简单粗暴的办法:

function mousePosition(evt){
  evt = evt || window.event;
return { x:evt.clientX, y:evt.clientY }; }

clientX 和 clientY 分别指的是鼠标相对于当前窗口的坐标,通常用于固定定位(fixed)

如果需要获取鼠标相对于当前页面的坐标,可以使用 pageX 和 pageY

 

二、生成 event 对象

但是火狐浏览器中并没有 window.event,需要手动创建一个 event 对象:

function getEvent(){
 if (document.all) return window.event;
 func = getEvent.caller;
 while (func != null){
   var arg0 = func.arguments[0];
   if (arg0) {
     if ((arg0.constructor == Event || arg0.constructor == MouseEvent) || (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)){
        return arg0;
     }
   }
   func = func.caller;
 }
 return null;
}

 

调用之后就能正常使用 event 对象了:

function test() {
   var event = getEvent();
   console.log('evtx:', event.clientX);
   console.log('evty:', event.clientY);
}
 

转载于:https://www.cnblogs.com/wisewrong/p/6803677.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值