以下文章是转 :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获取需要的信息。