方式:
1.ele.on事件=function 通用方法
2.addEventListener(事件类型,事件处理函数,useCaptrue); this指向target
a)是元素的方法
b)IE9以上才支持
c)useCaptrue:Boolean值:true:在捕获阶段调用同类事件
false:在冒泡阶段调用同类事件
d)事件的三个阶段:捕获,目标,冒泡
3. attachEvent(事件类型,事件处理函数) :IE9以下支持 this指向window
由于this指向不同,浏览器兼容性不同,想要三个方式调用同一个function可采用如下的方式:
function createEventRegister(){
if(window.addEventListener){
return function(target, type, handler){
// this ---> window
target.addEventListener(type,handler)
}
}else if(window.attachEvent){
return function(target, type, handler) {
target.attachEvent("on" + type, function(){
handler.call(target, window.event);
})
}
}else{
return function(target, type, handler) {
target["on" + type] = handler;
}
}
}
var registeEvent = createEventRegister();
window.onload =function () {
var div = document.getElementById("div1");
registeEvent(div,"click",function(e){
console.log(e);
console.log(this);
//this---->该事件的触发对象
alert("太阳天空照,花儿对我笑")})
}