JS获取鼠标坐标位置实例分析


Posted in Javascript onJanuary 20, 2016

本文实例分析了JS获取鼠标坐标位置的方法。分享给大家供大家参考,具体如下:

取鼠标坐标位置有这些:鼠标在视口的坐标位置(clientX,clientY),鼠标在页面的坐标位置(pageX,pageY),鼠标在屏幕的坐标位置(screenX,screenY),其中鼠标在视口的坐标位置(clientX,clientY),以及鼠标在屏幕的坐标位置(screenX,screenY)在所有的浏览器中都支持,但是鼠标在页面的坐标位置(pageX,pageY)在IE8及更早版本不支持,但是没有关系,可以通过scrollLeft 和 scrollTop可以计算出pageX,pageY的值。

首先是跨浏览器的事件对象

var EventUtil = {
  addHandler:function(elem,type,handler){
    if(elem.addEventListener)
    {
      elem.addEventListener(type,handler,false);
    }else if(elem.attachEvent)
    {
      elem.attachEvent("on"+type,handler);
    }else
    {
      elem["on"+type]=handler;
    }
  },
  removeHandler:function(elem,type,handler){
    if(elem.removeEventListener)
    {
      elem.removeEventListener(type,handler,false);
    }else if(elem.detachEvent)
    {
      elem.detachEvent("on"+type,handler);
    }else
    {
      elem["on"+type]=null;
    }
  },
  getEvent:function(event){
    return event?event:window.event;
  },
  getTarget:function(event){
    return event.target||event.srcElement;
  },
  preventDefault:function(event){
    if(event,preventDefault){
      event.preventDefault();
    }else{
      event.returnValue = false;
    }
  },
  stopPropagation:function(event){
    if(event.stopPropagation){
      event.stopPropagation();
    }else{
      event.cancelBubble=true;
    }
  }
};

1.视口坐标位置

var div = document.getElementById("myDiv");
EventUtil.addHandler(div,"click",function(event){
   event = EventUtil.getEvent(event);
   alert("Client coordinages: "+event.clientX+","+event.clientY);
});

2.屏幕坐标位置

var div = document.getElementById("myDiv");
EventUtil.addHandler(div,"click",function(event){
   event = EventUtil.getEvent(event);
   alert("Screen coordinates: "+event.screenX+","+event.screenY);
});

3.页面坐标位置

var div = document.getElementById("myDiv");
EventUtil(div,"click",function(event){
   event = EventUtil.getEvent(event);
   var pageX = event.pageX;
   var pageY = event.pageY;
   if(pageX==undefined)
  {
     pageX=event.clientX+document.body.scrollLeft||document.documentElement.scrollLeft;
  }
   if(pageY==undefined)
   {
     pageY = event.clientY+document.body.scrollTop||document.documentElement.scrollTop;
   }
   alert("Page coordinates: "+pageX+","+pageY);
});

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
最新优化收藏到网摘代码(digg,diigo)
Feb 07 Javascript
找到了一篇jQuery与Prototype并存的冲突的解决方法
Aug 29 Javascript
JavaScript 捕获窗口关闭事件
Jul 26 Javascript
JS模块与命名空间的介绍
Mar 22 Javascript
JQuery中的html()、text()、val()区别示例介绍
Sep 01 Javascript
jquery.idTabs 选项卡使用示例代码
Sep 03 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
Aug 10 Javascript
javaScript中的原型解析【推荐】
May 05 Javascript
vue2.0获取自定义属性的值
Mar 28 Javascript
js阻止默认右键的下拉菜单方法
Jan 02 Javascript
vue-router重定向和路由别名的使用讲解
Jan 19 Javascript
Vue axios 将传递的json数据转为form data的例子
Oct 29 Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 #Javascript
学习JavaScript设计模式之模板方法模式
Jan 20 #Javascript
高性能JavaScript循环语句和条件语句
Jan 20 #Javascript
详解Javascript模板引擎mustache.js
Jan 20 #Javascript
JavaScript优化专题之Loading and Execution加载和运行
Jan 20 #Javascript
JQuery日历插件My97DatePicker日期范围限制
Jan 20 #Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
Jan 20 #Javascript
You might like
PHP常用函数小技巧
2008/09/11 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
js计算页面刷新的次数
2009/07/20 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
javascript中attribute和property的区别详解
2014/06/05 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
小程序转发探索示例
2019/02/19 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
简述Python中的面向对象编程的概念
2015/04/27 Python
python如何通过protobuf实现rpc
2016/03/06 Python
Python正则表达式完全指南
2017/05/25 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
python 如何上传包到pypi
2020/12/24 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
电子商务专业应届生求职信
2014/05/28 职场文书
踏青活动策划方案
2014/08/19 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
优秀党员申报材料
2014/12/18 职场文书