关于event事件的兼容问题

任何事件的触发都会产生event对象

event的使用兼容:

function fn(eve){
       // 兼容的写法
        var e = window.event || eve;
        console.log(e)
    }

键盘事件兼容问题:

var eve = event || window.event
var keyCode = eve.keyCode || eve.which

注:
event.whichwhich 属性指示按了哪个键或按钮。
IE只有keyCode属性,FireFox中有which和charCode属性,Opera中有keyCode和which属性,Chrome中有keyCode、which和charCode属性

阻止事件冒泡兼容写法:
通用方法:
event.stopPropagation();

说明:stopPropagation是事件对象Event的一个方法,作用是阻止目标元素事件冒泡到父级元素。

IE浏览器方法:
event.cancelBubble = true;

var e = event || window.event;
 // 通用方式阻止冒泡行为
          if(e.stopPropagation){  
              e.stopPropagation();
          }else{
          // IE浏览器阻止默认行为
               e.cancelBubble=true;  
          }

阻止浏览器默认行为兼容方法:
通用方法:
e.preventDefault();

说明:preventDefault是事件对象Event的一个方法,作用是取消一个目标元素的默认行为。如果元素没有默认行为,调用无效。

IE浏览器方法:
e.returnValue = false;
也可以用 return false;不仅返回值也会停止代码向下执行

// 函数封装
function stopDefault(event) {
    var e = event || window.event; 
    if (e.preventDefault){
        e.preventDefault();   // 标准浏览器
    }else{
        e.returnValue = false; // IE浏览器
    }
}

DOM2级事件监听器:

DOM0级事件 就是行内绑定的 DOM1级事件处理程序的名字以on开头,click => onclick、load =>
onload、change => onChange DOM2级事件

ie6、7、8:
1、添加DOM2级:节点对象.attachEvent(事件类型,事件处理)
2、取消DOM2级:节点对象.detachEvent(事件类型,事件处理)

主流浏览器:
1、添加DOM2级:节点对象.addEventListener(事件类型,事件处理,[事件流])
2、取消DOM2级:节点对象.removeEventListener(事件类型,事件处理,[事件流])

1、事件流指从页面中接收事件的顺序,也可理解为事件在页面中传播的顺序,主要是冒泡和捕获.
2、ie6、7、8事件类型需要“on”,主流浏览器不需要“on” 如果设置事件时,明确知道该事件需要取消,这时候只能写有名函数
3、设置事件和取消事件的格式必须一一对应

函数封装:

function addEvent(obj,inci,back){
        if(obj.addEventListener){
            obj.addEventListener(inci,back);
        }else if(obj.attachEvent){
            obj.attachEvent("on" + inci,back);
        }else{
            obj["on"+inci] = back;
        }
    }
function removeEvent(obj,inci,back){
        if(obj.removeEventListener){
            obj.removeEventListener(inci,back,false);
        }else if(obj.detachEvent){
            obj.detachEvent("on" + inci,back);
        }else{
            obj["on"+inci] = null;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值