js中的常见兼容问题

1.阻止浏览器的默认行为的兼容写法:

function stopDefault(e){
    if(e.preventDefault){
        e.preventDefault();
    }else{
        e.returnValue = false;//IE浏览器
    }
}
//备注:e代表事件对象
  • 还可以直接写一个return false;最好写在最后一行。

2.阻止事件冒泡的兼容写法:

function stopBubble(e){
    if(e.stopPropagation){
        e.stopPropagation()         //正常
    }else{
        e.cancelBubble = true;      //IE
    }
}
//备注:e代表事件对象

3. 删除监听事件句柄的兼容写法:

function removeEvent(ele,myevent,cb){
    if(ele.detachEvent){
        ele.detachEvent("on"+myevent,cb)//IE
    }else{
        ele.removeEventListener(myevent,cb,false);
    }
}
  • 非IE浏览器:元素.removeEventListener(“不加on的事件名”,句柄,false/true),此处的false表示允许事件冒泡,true表示允许事件委托,默认不写为false。
  • IE浏览器:元素.detachEvent(“加on的事件名”,事件句柄),没有第三个参数。

4.事件监听绑定事件的兼容写法:

function addEvent(ele,myevent,cb){
    if(ele.attachEvent){
        ele.attachEvent("on"+myevent,cb)//IE
    }else{
        ele.addEventListener(myevent,cb,false)
    }
}

5.获取样式的兼容写法:

function getStyle(ele,attr){
    if(Element.currentStyle){
        return ele.currentStyle[attr];// IE浏览器
    }else{
        return getComputedStyle(ele,false)[attr];
    }
}

6. 获取事件对象的兼容写法:

  • IE浏览器:window.event;
  • 非IE浏览器:对象.事件 = function(event){} (对象执行函数的参数即是事件对象)
var e = eve || window.event;
 *注意:e指的是事件对象。*

7.获取事件源的兼容写法:

var target = e.target || e.srcElement;
 *注意:e指的是事件对象。*

8.获取键盘按键的ASCII码的兼容写法:

var keyCode = e.keyCode || e.which;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值