事件响应函数:事件对象

249 阅读2分钟

当浏览器侦测到事件响应函数被调用时,会自动传入一个包含了如鼠标坐标,按下了哪个按键,鼠标滚轮的方向等信息的事件对象实参

areaDiv.mousemove = function(event){

if(!event){

event = window.event;

}

var x = event.clientX;

var y = event.clientY;

console.log("鼠标指针横坐标为:"+ x + "鼠标指针纵坐标为:" + y);

}

浏览器的输出结果即为用户鼠标坐标信息,考虑到兼容性,部分浏览器的事件对象是包含在window对象下的,所以做一个简单的判断,如果event对象不存在,那么event = window.event,实际上,更简单为的写法为event = event||window.event,对event进行赋值,如果前者走得通,就维持前者,如果前者走不通,就走后者

event包含target属性,返回调用事件响应函数的对象。比如,单击ul下的某个链接,希望可以弹出提示正在点击链接,如果利用for循环,对每个链接增加一条响应函数,过于繁琐,可以利用事件冒泡和event属性,对每一条li的父级ul增加event属性,同时为每一条li设置class为link,并对ul添加判断和提示语句

ul.onclick = function(event){

event = event || window.event;

if(event.target.className =="link"){

alert("正在点击链接")

}

}

比起直接为时间响应函数直接赋予函数,更好的方式是加入addEventListener,一条事件响应函数只能赋予一个操作,而addEventListener可以增加多条函数,第一个参数为事件字符串,第二个参数为回调函数,第三个参数为是否在捕获阶段触发事件,需要一个布尔值,一般为false

var btn = document.getElementById("btn01");

btn.addEventListener = ("click",function(){},false);

注意这里的事件响应不加on,比如onclick,写为click

但是IE5-10不支持addEventListener,IE支持attachEvent()方法,使用方法和addEventListener类似,第一个参数为事件字符串,这里必须有on,第二个参数为回调函数,这个方法的执行顺序是后绑定,先执行