浏览器兼容笔记(2)

内容参考自慕课网
dom中的事件对象event

  1. type表示事件的类型。
  2. target表示来自哪一个元素的
  3. stopPropagation()阻止事件的冒泡行为
  4. preventDefault()阻止事件的默认行为

IE里面的事件对象

  1. type属性,用于获得事件的类型
  2. srcElement属性,用于获得事件的对象,和dom不一样,可以在声明时定义event = event||window.eventobject = element.target||element.srcElement
  3. cancelBubble属性,true阻止冒泡
  4. returnValue属性,阻止事件的默认行为
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浏览器兼容-事件处理程序2</title>
</head>
<body>
    <div id="box">
        <input id="btn1" type="button" value="这是按钮一" />
        <a href="浏览器兼容-事件处理程序.html" id="link1">gotobaidu</a>
    </div>

    <script type="text/javascript">
        var btn1 = document.getElementById("btn1");
        var link1 = document.getElementById("link1");       
        var box = document.getElementById("box");       
        function showMessage(e){
            alert("button被点击");
        }
        function showBoxMessage(e){
            alert("BOX盒子冒泡");
        }
        //封装函数
        var eventUtil={
            //添加句柄
            addHandler:function(element,type,handler){
                if(element.addEventListener){
                    element.addEventListener(type,handler,false);
                }else if(element.attachEvent){
                    element.attachEvent("on"+type,handler);
                }else{
                    element["on"+type]=handler;
                }
            },
            //移除句柄
            removeHandler:function(element,type,handler){
                if(element.removeEventListener){
                    element.removeEventListener(type,handler,false);
                }else if(element.detachEvent){
                    element.detachEvent("on"+type,handler);
                }else{
                    element["on"+type]=null;
                }
            },
            //获得事件
            getEvent:function(event){
                return event?event:window.event;
            },
            //获得事件的类型
            getType:function(event){
                return event.type;
            },
            //获得事件来自哪个元素
            getElement:function(){
                return event.target||event.srcElement;
            },
            //阻止默认的行为
            preventDefault:function(event){
                if(event.preventDefault){
                    event.preventDefault();
                }else{
                    event.returnValue=false;
                }
            },
            //阻止事件的冒泡行为
            stopPropagation:function(){
                if(event.stopPropagation){
                    event.stopPropagation();
                }else{
                    event.cancelBubble();
                }
            }
        }
        eventUtil.addHandler(box,'click',showBoxMessage);
        eventUtil.addHandler(btn1,'click',showMessage);
        eventUtil.addHandler(link1,'click',function(e){
            e = eventUtil.getEvent(e);
            //上面的也可以写 e= e||window.event;
            alert(eventUtil.getElement(e));
            eventUtil.preventDefault(e);
            eventUtil.stopPropagation(e);
        });
    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值