zoukankan      html  css  js  c++  java
  • JavaScript高级程序设计45.pdf

    客户区坐标位置

    clientX和clientY保存着鼠标指针在视口中的水平位置坐标和垂直位置坐标(显示出页面的部分叫做客户区,坐标信息不包括页面的滚动距离)

    var div=document.getElementById("myDiv");

    EventUtil.addHandler(div,"click",function(event){

          event=EventUtil.getEvent(event);

          alert("Client coordinates:"+event.clientX+","+event.clientY);

        });

    页面坐标信息

    pageX和pageY属性,类似客户区坐标位置,在页面没有滚动的情况下,pageX和pageY属性clientX和clientY相等

    IE8及之前版本不支持事件对象的页面坐标,可以使用滚动信息计算出来,document.body(混杂模式)和document.documentElement(标准模式)中的scrollTop和scrollLeft属性

    var div=document.getElementById("myDiv");

    EventUtil.addHandler(div,"click",function(event){

          event=EventUtil.getEvent(event);

          var pageX=event.pageX,

            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);

    });

    屏幕坐标位置

    相对于整个电脑屏幕的位置screenY和screenX属性

    修改键

    鼠标事件主要是使用鼠标来触发的,键盘的某些按键也会影响操作

    Shift、Ctrl、Alt和Meta(Windows电脑是Windows键,苹果机是Cmd键)

    DOM规定了4个属性,表示这些修改建的状态shiftKey、ctrlKey、altKey和metaKey这些属性包含的都是布尔值,被按下则值为true

    if(event.shiftKey){

        //一些代码

      }

    IE8及之前版本不支持metaKey属性

    相关元素

    mouseover和mouseout事件:对于mouseover事件,事件的主目标是获得光标的元素,相关元素是失去光标的元素;对于mouseout,事件的主目标是失去光标的元素,相关元素是获得光标的元素

    DOM通过event对象的relatedTarget属性提供了相关元素的信息,这个属性只对于mouseover和mouseout事件才包含值,对于其他事件,值是null

    IE8及之前版本不支持relatedTarget属性,但提供了保存相同信息的不同属性,mouseover事件触发时,IE的fromElement属性中保存了相关元素;mouseout事件触发时,IE的toElement属性中保存了相关元素;

    把这个跨浏览器取得相关元素的方法添加到EventUtil对象中

    var EventUtil={

        getRelatedTarget:function(event){

          if(event.relatedTarget){

              return event.relatedTarget;

            }else if(event.toElement){

              return event.toElement;

            }else if(event.fromElement){

              return event.fromElement;

            }

            else{

              return null;

            }

          },

        //省略了其他代码

      };

  • 相关阅读:
    Myeclipse运行报错:an out of memory error has occurred的解决方法
    关于UnsupportedClassVersionError的错误处理
    Java设置session超时(失效)的三种方式
    mybatis自增长插入id
    揭开Java IO流中的flush()的神秘面纱
    mybatis多表查询
    在Myeclipse中提交代码到GitHub中
    一台电脑安装多个版本的jdk
    使用Git的Push出现rejected
    暴力解决HTMLTestRunner出现dict() ->new empty dictionary的问题
  • 原文地址:https://www.cnblogs.com/sdgjytu/p/3781738.html
Copyright © 2011-2022 走看看