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>
<!--
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>
<!--
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
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获取需要的信息。