为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

3 回答

在了解这个函数前可以再复习下上面讲的几个章节,先了解下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对象的属性

}

2 回复 有任何疑惑可以回复我~
#1

Daniel_ 提问者

非常感谢!
2015-11-10 回复 有任何疑惑可以回复我~
#2

Daniel_ 提问者

我最近也在看这本书,还没看到这一节,感谢你码了那么多字
2015-11-10 回复 有任何疑惑可以回复我~

是事件

0 回复 有任何疑惑可以回复我~

omnouseover 不就是个时间吗

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信