各浏览器的鼠标位置测试

各浏览器的鼠标位置测试

废话不多说,下面分别检测各个浏览器下的

e.pageX
e.layerX
e.offsetX
e.clientX
e.x

属性;

测试浏览器:

FF9/Chrome15/opera11.52/safari5(win)/IE6/7/8/9

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <link rel="stylesheet" href="http://www.cnblogs.com/../js_tool/css/debug.css">
    <style type="text/css">
        *{ margin: 0; padding: 0;}
        #view{ position: relative; left: 25px; top:25px; width: 400px; height: 100px; border: 100px solid #adff2f; background: #ff8c00;}
        #view_2{ position: absolute; left: 75px; top:375px; width: 300px; height: 100px; background: #008b8b;}
    </style>
</head>
<body>
<div id="fake" style=" position: absolute; left: 10px; top:10px; width: 3000px; height: 2000px; background: #d3d3d3; padding: 50px;">
<div id="view"></div>
<div id="view_2"></div>
</div>
<script type="text/javascript" src="http://www.cnblogs.com/../common_js/Xe.js"></script>
<script type="text/javascript" src="http://www.cnblogs.com/../js_tool/js/debug.js"></script>
<script type="text/javascript">
    var debug = new Xe.debug('调试面板1');
    debug.createPanel();
    document.onclick = function(e){
        e = e || window.event;
        debug.log('e.pageX:',e.pageX);
        debug.log('e.layerX:',e.layerX);
        debug.log('e.offsetX:',e.offsetX);
        debug.log('e.clientX:',e.clientX);
        debug.log('e.x:',e.x);
    }
</script>
</body>
</html>

  

 

图示:

各浏览器的鼠标位置测试

测试结果如下:

chrome:

e.pageX——相对整个页面的坐标
e.layerX——相对当前坐标系的border左上角开始的坐标
e.offsetX——相对当前坐标系的border左上角开始的坐标
e.clientX——相对可视区域的坐标
e.x——相对可视区域的坐标

ff:

e.pageX——相对整个页面的坐标
e.layerX——相对当前坐标系的border左上角开始的坐标
e.offsetX——无
e.clientX——相对可视区域的坐标
e.x——无

opera:

e.pageX——相对整个页面的坐标
e.layerX——无
e.offsetX——相对当前坐标系的内容区域左上角开始的坐标
e.clientX——相对可视区域的坐标
e.x——相对可视区域的坐标

safari:(这个和chrome是一样的)

e.pageX——相对整个页面的坐标
e.layerX——相对当前坐标系的border左上角开始的坐标
e.offsetX——相对当前坐标系的border左上角开始的坐标
e.clientX——相对可视区域的坐标
e.x——相对可视区域的坐标

 

IE9:

e.pageX——相对整个页面的坐标
e.layerX——相对当前坐标系的border左上角开始的坐标 + 滚动条滚过的距离(这个NB轰轰了····=。=)
e.offsetX——相对当前坐标系的内容区域左上角开始的坐标
e.clientX——相对可视区域的坐标
e.x——相对当前坐标系的border左上角开始

IE8:

e.pageX——无
e.layerX——无
e.offsetX——相对当前坐标系的内容区域左上角开始的坐标
e.clientX——相对可视区域的坐标
e.x——相对当前坐标系的border左上角开始

IE7:

e.pageX——无
e.layerX——无
e.offsetX——相对当前坐标系的内容区域左上角开始的坐标
e.clientX——相对可视区域的坐标
e.x——相对当前坐标系的border左上角开始

IE6:

e.pageX——无
e.layerX——无
e.offsetX——相对当前坐标系的内容区域左上角开始的坐标
e.clientX——相对可视区域的坐标
e.x——相对当前坐标系的border左上角开始

 

综合为下表:各浏览器的鼠标位置测试

插入表格不方便,鸭梨很大啊

 

其中clientX是W3C标准的一个属性,所以都挺符合的,其他的就看浏览器厂商的心情了。

对于非IE6/7/8来说,pageX属性都可以获取到鼠标事件发生处到整个页面左边的坐标,IE6/7/8就只能通过clientX+scrollLeft来获得相同的结果。

 

需要注意的是layerX和x这两个属性。

event.x本来是IE的,但是除了FF之外,其他的也都实现了这个属性,但是opera,chrome和safari和IE的实现并不一致,opera,chrome和safari的event.x返回值和event.clientX相同

opera没有实现layerX,IE9实现了,但是IE9又是个奇葩,layerX实现得稀奇古怪。

 

layerX与offsetX

除了ff,其他浏览器都实现了offsetX,opera跟随IE系列,与IE实现相同,就是从内容区域边界开始算起,就是上面图示中的B点,chrome和safari从border边界开始算起,就是上面图示中的A点。

 

除了上面的一些区别,另外一个重要区别就是各个浏览器默认的边界零点也不一致,计算的时候还需要根据浏览器不同来补充或删减。

转载于:https://www.cnblogs.com/chris-oil/p/3355525.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109997.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux安装oracle数据库并创建数据库_oracledeveloper安装教程

    linux安装oracle数据库并创建数据库_oracledeveloper安装教程环境:redhatlinux5.7软件:oracle11g1、操作系统安装组建选择(具体安装linux过程参见linux安装步骤):GNOMEDesktopEnvironmentEditorsGraphicalInternetText-basedInternet(可以不选择)DevelopmentLibrariesDevelopmentToo

    2022年9月25日
    5
  • hashlib加密「建议收藏」

    hashlib加密「建议收藏」加密算法介绍HASHHash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。…

    2022年4月30日
    56
  • js数组怎么删除指定元素_给数组添加一个元素的方法

    js数组怎么删除指定元素_给数组添加一个元素的方法js数组是js部分非常重要的知识,有时我们有这么个需求js数组删除指定元素,先定义一个函数来获取删除指定元素索引值,然后用js数组删除的方法,来删除指定元素即可,就两步不难,很简单。1、JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,也就是索引值,代码如下: 1 2 3 4 5 6 Array….

    2022年9月27日
    5
  • MyBatis注释关关联关系配置

    MyBatis注释关关联关系配置

    2021年8月13日
    69
  • 源码网_python源码从哪下载

    源码网_python源码从哪下载源码目录结构我们首先来看下models.py的代码结构我们可以看到这个模块中定义了12个属性和22个模型类,我们依次来看属性源码分析importosfromenumimportEnu

    2022年7月30日
    7
  • Linux开发在中国[通俗易懂]

    Linux开发在中国[通俗易懂][2004-5-15]  中关村最堵车的白颐路旁的一座公寓里,赵宇一手拿着遥控器,一手指着电视屏幕给客户演示着流媒体的点播效果。作为腾博讯公司的总经理,赵宇已经在Linux圈里面摸爬滚打了五年多。他曾策划发行过Linux光盘,创建过Linux社区,做过Linux杂志主编。现在,他又基于Linux流媒体服务器技术创建了自己的公司。  但…

    2022年10月4日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号