原生js添加事件(兼容)

绑定事件

document.onclick=function () {
        alert(1);
    }

解除事件

    document.onclick=null;
    document.onclick=function () {
        alert(2)
    }

添加事件

addEventListener()
对象 . addEventListener(“click”,fun(){},false)
不兼容IE678;
事件名称不带on
第二个是事件函数
事件捕获。默认false

兼容IE678用attachEvent()
只接收俩参数
第一个是事件名称,是带on的事件名字
第二个是事件函数。

//添加事件的兼容写法
    function addEvent(obj,eName,eFn) {
        if(!-[1,]){ //判断是ie678
            obj.attachEvent("on"+eName,function(){
            eFn.call(obj);
}) //兼容IE678
        }else{
            obj.addEventListener(eName,eFn)//兼容标准浏览器
        }
    }*/

删除添加的事件

1.使用有名函数
fn1==null
2.如果一定要是匿名函数
转为字符串清除

    //移除有名事件
    function removeEvent(obj,eName,eFn) {
        if(obj.attachEvent){ //判断支不支持attacgevent方法,如果支持就是ie678
            obj.detachEvent("on"+eName,eFn) //兼容IE678
        }else{
            obj.removeEventListener(eName,eFn)//兼容标准浏览器
        }
    }
    //移除匿名事件

添加事件时的this指向问题

addEventListener()
this指向box(添加事件的对象)

兼容IE678用attachEvent()
this指向window,obj
匿名函数加有名函数call来改变this的指向
bind(IE8不支持 )

box.addEventListener("click",function () {
        alert(this)//div(box)
    });
box.attachEvent("onclick",function () {
        fn.call(box)
    });
function fn(){
    alert(this)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值