《中级前端1.6》JavaScript事件详解——DOM0,DOM2,IE事件,事件冒泡

JavaScript的事件处理可以完美的兼容各种浏览器的事件处理。

 

JS事件详解-事件流

使用中用的最多的就是事件冒泡,而且是对任何浏览器都兼容的。

 

JS事件详解-事件处理

1、HTML事件处理:

<div id="div">
    <button id="btn1" onclick="domo()">按钮</button>
</div>
<script>
    function demo() {
        alert("Hello html事件处理");
    }
</script>

弊端:如果函数名称被修改了,那么要修改html文档中的很多处。

 

2、DOM0级事件处理:

<div id="div">
    <button id="btn1">按钮</button>
</div>
<script>
    var btn1 = document.getElementById("btn1");
    btn1.onclick = function() {
        alert("Hello DOM0级事件处理1");
    }
    btn1.onclick = function() {
        alert("Hello DOM0级事件处理2");
    }
</script>

弊端:DOM0级事件处理不能灵活添加事件,如上所示,第二次设置onclick后,将覆盖掉第一次的onclick。

 

3、DOM2级事件处理:

<div id="div">
    <button id="btn1">按钮</button>
</div>
<script>
    var btn1 = document.getElementById("btn1");
    btn1.addEventListener("click", demo1);
    btn1.addEventListener("click", demo2);
    btn1.removeEventListener("click", demo1);

    function demo1() {
        alert("1");
    }

    function demo2() {
        alert("2");
    }
</script>

优点:处理事件非常灵活。

IE8及以下不支持addEventListener,IE所用的函数名称是attachEvent和detachEvent,参数和用法与addEventListener一样,所以如果项目需要支持低级IE浏览器且不用jQuery,我们可以手动写出如下兼容程序:

<div id="div">
    <button id="btn1">按钮</button>
</div>
<script>
    var btn1 = document.getElementById("btn1");
    if (btn1.addEventListener) {
        btn1.addEventListener("click", demo);
    } else {
        btn1.attachEvent("onclick", demoie);
    }

    function demo() {
        alert("1");
    }

    function demoie() {
        alert("ie1");
    }
</script>

注意,ie中不是click而是onclick

 

JS事件详解-事件对象

<div id="div1">
    <button id="btn1">按钮</button>
    <a href="http://www.baidu.com/" id="aid">百度</a>
</div>
<script>
    var btn1 = document.getElementById("btn1");
    btn1.addEventListener("click", showType);
    var div1 = document.getElementById("div1");
    div1.addEventListener("click", showDiv);

    function showType(e) {
        //alert(e.type);
        alert(event.target);
        event.stopPropagation(); //阻止事件冒泡
    }

    function showDiv(e) {
        alert("div");
    }
    var a1 = document.getElementById("aid");
    a1.addEventListener("click", showA);

    function showA(e) {
        alert("a");
        event.stopPropagation(); //阻止事件冒泡
        event.preventDefault(); //阻止默认行为
    }
</script>

 

posted @ 2016-01-12 20:51  暖风叔叔  阅读(309)  评论(0编辑  收藏  举报