基于JavaScript实现 获取鼠标点击位置坐标的方法_基础知识

在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的浏览器下会有不同的结果甚至是有的浏览器下没结果,这篇文章就上鼠标点击位置坐标获取做一些简单的总结,没特殊声明代码在IE8,FireFox,Chrome下进行测试兼容

鼠标点击位置坐标

相对于屏幕

如果是涉及到鼠标点击确定位置相对比较简单,获取到鼠标点击事件后,事件screenX,screenY获取的是点击位置相对于屏幕的左边距与上边距,不考虑iframe因素,不同浏览器下表现的还算一致。

复制代码 代码如下:

function getMousePos(event) {
            var e = event || window.event;
            return {'x':e.screenX,'y':screenY}
        }

相对浏览器窗口

简单代码即可实现,然而这是还不够,因为绝大多数情况下我们希望获取鼠标点击位置相对于浏览器窗口的坐标,event的clientX,clientY属性分别表示鼠标点击位置相对于文档的左边距,上边距。于是类似的我们写出了这样的代码

复制代码 代码如下:

function getMousePos(event) {
            var e = event || window.event;
            return {'x':e.clientX,'y':clientY}
        }

相对文档

简单测试也没什么问题,但是clientX与clientY获取的是相对于当前屏幕的坐标,忽略页面滚动因素,这在很多条件下很有用,但当我们需要考虑页面滚动,也就是相对于文档(body元素)的坐标时怎么办呢?加上滚动的位移就可以了,下边我们试试怎么计算页面滚动的位移。
其实在Firefox下问题会简单很多,因为Firefox支持属性pageX,与pageY属性,这两个属性已经把页面滚动计算在内了。
在Chrome可以通过document.body.scrollLeft,document.body.scrollTop计算出页面滚动位移,而在IE下可以通过document.documentElement.scrollLeft ,document.documentElement.scrollTop

复制代码 代码如下:

function getMousePos(event) {
            var e = event || window.event;
            var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
            var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
            var x = e.pageX || e.clientX + scrollX;
            var y = e.pageY || e.clientY + scrollY;
            //alert('x: ' + x + '\ny: ' + y);
            return { 'x': x, 'y': y };
        }

时间: 2024-11-03 15:58:53

基于JavaScript实现 获取鼠标点击位置坐标的方法_基础知识的相关文章

基于JavaScript 声明全局变量的三种方式详解_基础知识

JS中声明全局变量主要分为显式声明或者隐式声明下面分别介绍. 声明方式一: 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量.该方式即为显式声明详细如下: 复制代码 代码如下: var test = 5;  //全局变量function a(){  var cc=3; //局部变量  alert(test);}function b(){alert(test);} 声明方式二: 没有使用var,直接给标识符test赋值,这

JavaScript 对任意元素,自定义右键菜单的实现方法_基础知识

一.一些概念: 1.鼠标事件有一个botton属性:返回一个整数,用于表示点击的是哪个鼠标按键. BUG:在IE和标准DOM的鼠标事件中,唯一一个button属性值相同的是"单击右键"事件,都返回2. 2.事件onmousedown:表示鼠标按键按下的动作. 事件oncontextmenu:点击鼠标触发的另一个事件. 3.中断默认事件处理函数的方法:IE中设置returnValue=false;  标准DOM中调用preventDefault()方法. 4.事件对象:①在IE中,事件对

JavaScript中使用Math.PI圆周率属性的方法_基础知识

 这将返回一个圆到其直径的圆周的比率,大约3.14159.语法 Math.PI 例子: <html> <head> <title>JavaScript Math PI Property</title> </head> <body> <script type="text/javascript"> var property_value = Math.PI document.write("Prope

详解JavaScript中|单竖杠运算符的使用方法_基础知识

js运算符单竖杠"|"的作用 在js整数操作的时候,相当于去除小数点,parseInt.在正数的时候相当于Math.floor(),负数的时候相当于Math.ceil() 注: 1. Math.ceil()用作向上取整. 2. Math.floor()用作向下取整. 3. Math.round() 我们数学中常用到的四舍五入取整. console.log(0.6|0)//0 console.log(1.1|0)//1 console.log(3.65555|0)//3 console.

JavaScript中用于生成随机数的Math.random()方法_基础知识

 此方法返回0(含)和1(不包括)之间的随机数语法 Math.random() ; 下面是参数的详细信息:     NA 返回值: 返回0(含)和1(不包括)之间的随机数 例子: <html> <head> <title>JavaScript Math random() Method</title> </head> <body> <script type="text/javascript"> var v

简介JavaScript中用于处理正切的Math.tan()方法_基础知识

 这个方法返回一个数字的正切值.tan 方法返回表示的角度的正切值.语法 Math.tan( x ) ; 下面是参数的详细信息:     x: 一个数字,表示以角度表示弧度 返回值: 返回一个数字的正切值 例子: <html> <head> <title>JavaScript Math tan() Method</title> </head> <body> <script type="text/javascript&q

JavaScript中Array 对象相关的几个方法_基础知识

push 方法将新元素添加到一个数组中,并返回数组的新长度值. arrayObj.push([item1 [item2 [. . . [itemN ]]]]) 参数arrayObj 必选项.一个 Array 对象. item, item2,. . . itemN 可选项.该 Array 的新元素. 说明push 方法将以新元素出现的顺序添加这些元素.如果参数之一为数组,那么该数组将作为单个元素添加到数组中.如果要合并两个或多个数组中的元素,请使用 concat 方法. 示例 <script ty

获取body标签的两种方法_基础知识

引用body标签有两做法: 第一种:使用DOM Core 即引用某个给定文档的第一个(也是仅有的一个)body标签 复制代码 代码如下: document.getElementsByTagName("body")[0] 第二种:使用HTML-DOM,即引用某个给定文档的body属性: 复制代码 代码如下: doucumnet.body 本文的重点: 1. 哪些是DOM Core,哪些是HTML-DOM(慢慢补充)

用JavaScript获取DOM元素位置和尺寸大小的方法_基础知识

在一些复杂的页面中经常会用JavaScript处理一些DOM元素的动态效果,这种时候我们经常会用到一些元素位置和尺寸的计算,浏览器兼容性问题也是不可忽略的一部分,要想写出预想效果的JavaScript代码,我们需要了解一些基本知识. 基础概念 为了方便理解,我们需要了解几个基础概念,每个HTML元素都有下列属性 offsetWidth clientWidth scrollWidth offsetHeight clientHeight scrollHeight offsetLeft clientL