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);
    }
    
    
  • 相关阅读:
    LeetCode
    (六)6.5 Neurons Networks Implements of Sparse Autoencoder
    (六)6.4 Neurons Networks Autoencoders and Sparsity
    (六) 6.3 Neurons Networks Gradient Checking
    opencv::调整图像亮度与对比度
    opencv::两张图片的线性融合
    opencv::源码编译
    日志::spdlog
    std::is_same
    json::rapidjson工具
  • 原文地址:https://www.cnblogs.com/wisewrong/p/6803677.html
Copyright © 2011-2022 走看看