一、当绑定在DOM元素上的事件处理写在标签中时,有两个已知常量,其名称被占用,分别是:
event:表示事件对象, this:表示元素本身
注意:若调用的脚本方法需要用到这两个对象,必须作为参数传递进来
<img id="id_img" src="luguo.jpg" οnclick="get_xy(event)">
function get_xy(e){ alert("鼠标坐标:"+e.screenX+","+e.screenY);}
// HTML标记属性方式(必须显式传递实参event)
<img id="id_img" src="luguo.jpg" οnclick="alert('鼠标坐标:'+event.screenX
+','+event.screenY);"> // HTML标记内嵌Javascript语句(直接引用event事件对象)
二、当绑定在DOM元素上的事件处理未写在标签中时,而是纯粹通过脚本绑定,那么:
<img id="id_img" src="luguo.jpg">
id_img.οnclick=get_xy; // 元素对象方式(默认隐式传递event对象)
function get_xy(e){ alert("鼠标坐标:"+e.screenX+","+e.screenY);}
脚本方法第1个形参:自动表示事件对象, this:自动表示元素本身
注意:脚本方法的第1个形参名称无论是写event,还是x,或者a,都表示为Event事件对象,
若没有写形参名称,还可通过arguments[0]来获取该Event事件对象。
三、在上述第一种情况下,脚本方法的形参都有个特殊情形:
<img id="id_img" src="luguo.jpg" οnclick="get_xy()"> // 仅IE方式下可用,不推荐
function get_xy(){ // 注意:HTML调用中未传参时,脚本中不能有event形参,但代码内部使用了event参数
alert("鼠标坐标:"+event.screenX+","+event.screenY);
}
若调用脚本方法时并没有传入event的实参,但方法实现内部却引用了event变量,那它在IE下可表示window对象的属性,firefox不认识该变量,而chrome仍会当作Event对象。(若在方法实现中形参用了event名称,那该名称就只能被当作普通形参用,即使在IE下也不会被识别为window的属性)
转载于:https://blog.51cto.com/maplebb/2295752