为什么event.clinetX能获取到坐标值呢,event没定义过呀?

来源:4-1 [DOM事件] QQ面板拖拽效果(上)

Daniel_

2015-08-11 18:04

event是一个关键字吗? function fnDown(){document.onmousemove=function(event){event= event||window.event;document.title=event.clientX+','event.clientY;}中的event并没有传进来,也没有实现定义,为什么event.clientX和event.clientY能获取到坐标呢?

写回答 关注

3回答

  • zoe0773
    2015-10-23 23:56:42
    已采纳

    在了解这个函数前可以再复习下上面讲的几个章节,先了解下event什么,是怎么产生的。

    老师讲的前几章节的内容都是《javascript高级程序设计》上的内容,正好最近也在看这本书,总结了以下你的问题相关的知识,也许会对你理解这个函数有帮助,具体知识还可以从书上得到。

    1.  event 是一个事件对象,当你触发DOM上的某个事件的时候就会产生这个对象。对象里面包含了所有与事件相关的信息。包括导致事件的元素事件的类型(click、focus、blur、keydown、keypress、mouseover、 load等等事件类型),以及与特定事件相关的信息等。

    2. 对于兼容DOM的浏览器,会将一个event对象直接传入到事件处理函数中。

         无论你用DOM0级的事件处理函数

                //like this.

                obj.onclick = function(event){   //函数体   }

        还是用DOM2级的处理函数

                 //like this.

                obj.addEventListener("click",function(event){ 函数体},false);

        都会传入一个event对象到事件处理函数中。

    3.    在IE中 event 对象又是怎样的呢:

        如果你用dom0级方法添加事件处理程序时,event对象就是作为windows对象的一个属性来存在的。

    比如:  obj.onclick = function( ){

                    var event = window.event;    //在IE中获取event对象

    }

      如果你不用dom0级方法添加事件,而是用IE自己的事件处理程序  attachEvent( )添加事件的话:

        obj.attachEvent("onclic",function(event){   //因为这个方法的作用域本来就在全局作用域的 也就是windows,相当于也是通过windows对象来访问event对象

            alert(event.type); //click 

    });

    所以你问的 function fnDown(){

                    document.onmousemove=function(event){

                    event= event||window.event;  //它其实已经在这里获取了event对象了,无论它是不是兼容DOM的浏览器,都可以通过这个跨浏览器的代码获取event对象

                    document.title=event.clientX+','event.clientY;  //所以这里能获得客户端的坐标信息;clientX clientY都是event对象的属性

    }

    Daniel...

    我最近也在看这本书,还没看到这一节,感谢你码了那么多字

    2015-11-10 10:15:39

    共 2 条回复 >

  • EpisodeOne
    2015-10-15 15:02:43

    是事件

  • EpisodeOne
    2015-10-15 15:02:11

    omnouseover 不就是个时间吗

DOM事件探秘

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

99544 学习 · 1197 问题

查看课程

相似问题