为什么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能获取到坐标呢?
event是一个关键字吗? function fnDown(){document.onmousemove=function(event){event= event||window.event;document.title=event.clientX+','event.clientY;}中的event并没有传进来,也没有实现定义,为什么event.clientX和event.clientY能获取到坐标呢?
2015-08-11
在了解这个函数前可以再复习下上面讲的几个章节,先了解下event什么,是怎么产生的。
老师讲的前几章节的内容都是《javascript高级程序设计》上的内容,正好最近也在看这本书,总结了以下你的问题相关的知识,也许会对你理解这个函数有帮助,具体知识还可以从书上得到。
event 是一个事件对象,当你触发DOM上的某个事件的时候就会产生这个对象。对象里面包含了所有与事件相关的信息。包括导致事件的元素,事件的类型(click、focus、blur、keydown、keypress、mouseover、 load等等事件类型),以及与特定事件相关的信息等。
对于兼容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对象的属性
}
举报