attachEvent传递给其handler的一个默认参数

简介:

以下文章是转 :http://www.cnitblog.com/yemoo/archive/2008/01/02/38384.html
attachEvent是IE专有的事件捕获函数,偶也用过了很多次,传入事件名及捕获句柄(即事件处理函数)即可。

如document.attachEvent("onclick",function(){alert('click')});代表点击页面任意位置都会弹出消息“click”。

对于第二个参数function,确实attachEvent会默认传递过去一个参数,不知其他人有没有注意到过,反正偶是第一次发现。

不信你就试试以下代码(单击页面任意位置):

< script type = " text/javascript " >
  
<!--
  
function  test(){
    alert(argument.length)
    alert(arguments[
0 ]);
  }
  document.attachEvent(
" onclick " ,test);
  
// -->
</ script >


执行上面的函数会分别弹出1和object。

那这个object是什么呢?可能很多人都会猜到了,就是event对象。该event对象包含了当前触发事件的所有信息。

执行以下测试代码(单击页面任意位置):

< script type = " text/javascript " >
  
<!--
  
function  test(){
    
var  info = '';
    
for ( var  i  in  arguments[ 0 ])
      info
+= (i + " \t: " + arguments[ 0 ][i] + " \n<br> " );
    alert(info);
  }
  document.attachEvent(
" onclick " ,test);
  
// -->
   </ script >


发现弹出了以下信息(根据你点击位置的不同显示信息会有不同):

recordset :null 
type :click 
fromElement :null 
toElement :null 
altLeft :false 
keyCode :0 
repeat :false 
reason :0 
behaviorCookie :0 
contentOverflow :false 
behaviorPart :0 
dataTransfer :null 
ctrlKey :false 
shiftLeft :false 
dataFld : 
returnValue :undefined 
qualifier : 
wheelDelta :0 
bookmarks :null 
button :0 
srcFilter :null 
nextPage : 
cancelBubble :false 
x :328 
y :482 
srcElement :[object] 
screenX :490 
screenY :572 
srcUrn : 
boundElements :[object] 
clientX :328 
clientY :482 
propertyName : 
shiftKey :false 
ctrlLeft :false 
offsetX :326 
offsetY :480 
altKey :false



这些信息可能有很多对我们都是有用的。但实际上个人感觉这个参数在IE中用处并不大,因为IE中Event是一个全局对象,可以直接使用event获取需要的信息。



本文转自Sam Lin博客园博客,原文链接:http://www.cnblogs.com/samlin/archive/2008/01/11/1034590.html,如需转载请自行联系原作者


目录
相关文章
|
16天前
|
JavaScript 前端开发
addEventListener()方法中的参数,以及作用
addEventListener()方法中的参数,以及作用
22 1
|
6月前
在调用一个函数时传递了一个参数,但该函数定义中并未接受任何参数
在调用一个函数时传递了一个参数,但该函数定义中并未接受任何参数
57 2
|
4月前
|
存储 C#
C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析
方法是一段代码,只有在调用时才会运行。 您可以将数据(称为参数)传递给方法。 方法用于执行某些操作,也被称为函数。 为什么使用方法?为了重用代码:定义一次代码,然后多次使用。
44 0
|
7月前
|
数据处理 对象存储
关于 Observable 对象调用 subscribe 方法时不传递任何参数值的用法讨论
关于 Observable 对象调用 subscribe 方法时不传递任何参数值的用法讨论
48 0
【学习笔记之我要C】函数的参数与调用
【学习笔记之我要C】函数的参数与调用
48 0
|
API C#
我不想再传递 nameof 了
有的时候抛出一个异常,我们需要知道是哪个方法抛出的异常。那么,我们可以通过传递 nameof 来获取调用者的方法名。但是,感觉很烦,每次都要传递 nameof。那么,有没有更好的方法呢?
64 0
我不想再传递 nameof 了
|
编译器
详解函数的三种传递方式
详解函数的三种传递方式
123 0
|
JSON 数据格式
09准备将Handler的返回值写入ServletResponse
在RequestMappingHandlerAdapter初始化完成后设置默认的HandlerMethodReturnValueHandler HandlerMethodReturnValueHandler体系介绍 HandlerMethodReturnValueHandler的执行流程
182 0
C#委托/Func()中 GetlnvocationList()方法的使用 | 接受委托多个返回值
C#委托/Func()中 GetlnvocationList()方法的使用 | 接受委托多个返回值
255 0
C#委托/Func()中 GetlnvocationList()方法的使用 | 接受委托多个返回值
【Groovy】闭包 Closure ( 闭包参数列表规则 | 默认参数列表 | 不接收参数 | 接收自定义参数 )
【Groovy】闭包 Closure ( 闭包参数列表规则 | 默认参数列表 | 不接收参数 | 接收自定义参数 )
137 0
【Groovy】闭包 Closure ( 闭包参数列表规则 | 默认参数列表 | 不接收参数 | 接收自定义参数 )