zoukankan      html  css  js  c++  java
  • 在火狐浏览器中获取鼠标位置

    最近项目中需要使用 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);
    }
    
    
  • 相关阅读:
    MySql的常用命令
    yum命令配置及使用说明和常见问题处理
    oracle12c创建用户和表空间出现的问题
    oracle云部署
    ORA-12154: TNS:could not resolve the connect identifier specified
    Linux之iptables
    Linux之MySQL
    Linux之apache
    oracle查锁表
    cookie 和 HttpSession
  • 原文地址:https://www.cnblogs.com/wisewrong/p/6803677.html
Copyright © 2011-2022 走看看