事件对象(示例、封装函数EventUtil())

事件对象

什么是事件对象?

在触发DOM上的事件时都会产生一个对象。

事件对象event

1.DOM中的事件对象

(1)\type属性用于获取事件类型

(2)\target属性用于获取事件目标

(3)\stopPropagation()方法用于阻止事件冒泡

(4)\preventDefault()方法用于阻止事件的默认行为

2.IE中的事件对象

(1)\type属性用于获取事件类型

(2)\srcElement属性 用于获取事件目标

(3)\cancelBubble属性 true阻止事件冒泡

(4)\returnValue属性 false阻止事件的默认行为

封装函数eventUtil():

var eventUtil = {
    getEvent:function (event) {
        return event?event:window.event;
    },
    getType: function (event) {
        return event.type;
    },
    getTarget:function (event) {
        return event.target||event.srcElement;
    },
    //阻止冒泡
    stopPropagation:function (event) {
        if(event.stopPropagation){
            event.stopPropagation();
        }else {
            event.cancelBubble=true;
        }
    },
    //阻止事件默认行为;
    preventDefault:function(event){
        if(event.preventDefault){
            event.preventDefault();
        }else {
            event.returnValue = false;
        }
    },
    //添加具柄;
    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;
        }
    }
};

示例:

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="eventUtil.js"></script>
    <script src="test1.js"></script>
</head>
<body>
<div id="div">
    <input type="button" value="click1" id="btn1">
    <a href="https://www.baidu.com" id="a">百度</a>
</div>
</body>
</html>

js:

window.onload = function () {
    var btn1 = document.getElementById("btn1");
    var a = document.getElementById("a");
    var div = document.getElementById("div");
    function show() {
        alert("btn clicked");
    }
    eventUtil.addHandler(div,"click",function () {
        alert("我是父盒子");
    });
    eventUtil.addHandler(btn1,"click",show);
    eventUtil.addHandler(a,"click",function (e) {
        e = eventUtil.getEvent(e);
        alert(eventUtil.getTarget(e));
        eventUtil.stopPropagation(e);
        eventUtil.preventDefault(e);
    });
    eventUtil.removeHandler(btn1,"click",show);
};

 

转载于:https://www.cnblogs.com/sunxirui00/p/7510288.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值