JavaScript事件詳細(xì)講解

字號(hào):


    事件的概念
    事件:指的是文檔或者瀏覽器窗口中發(fā)生的一些特定交互瞬間。我們可以通過(guò)偵聽(tīng)器(或者處理程序)來(lái)預(yù)定事件,以便事件發(fā)生的時(shí)候執(zhí)行相應(yīng)的代碼。
    一、事件流
    1.事件流:描述的是在頁(yè)面中接受事件的順序
    2.事件冒泡:由最具體的元素接收,然后逐級(jí)向上傳播至最不具體的元素的節(jié)點(diǎn)(文檔)
    3.事件捕獲:最不具體的節(jié)點(diǎn)先接收事件,而最具體的節(jié)點(diǎn)應(yīng)該最后接收事件
    二、事件處理
    1.HTML事件處理:直接添加到HTML結(jié)構(gòu)中
    2.DOM0級(jí)事件處理:把一個(gè)函數(shù)賦值給一個(gè)事件處理程序?qū)傩?BR>    3.DOM2級(jí)事件處理:
    addEventListener("事件名","事件處理函數(shù)",布爾值)
    true:事件捕獲
    false:事件冒泡
    removeEventListener();
    4.IE事件處理程序
    attachEvent
    detachEvent
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <div id="div">
    <button id="btn1">按鈕</button>
    </div>
    <!--<script>
    function demo(){
    alert("Hello HTML事件處理");
    }
    </script>-->
    <!--<script>
    var btn1 = document.getElementById("btn1");
    btn1.onclick = function(){alert("Hello DOM0級(jí)事件處理程序")};//被覆蓋掉
    btn1.onclick = function(){alert("Hello DOM0級(jí)事件處理程序2")};
    btn1.onclick = function(){alert("Hello DOM0級(jí)事件處理程序3")};
    </script>-->
    <!--<script>
    var btn1 = document.getElementById("btn1");
    btn1.addEventListener("click",demo1);
    btn1.addEventListener("click",demo2);
    btn1.addEventListener("click",demo3);
    function demo1(){
    alert("DOM2級(jí)事件處理程序1");
    }
    function demo2(){
    alert("DOM2級(jí)事件處理程序2");
    }
    function demo3(){
    alert("DOM2級(jí)事件處理程序3");
    }
    btn1.removeEventListener("click",demo2)
    </script>-->
    <script>
    var btn1 = document.getElementById("btn1");
    if(btn1.addEventListener){
    btn1.addEventListener("click",demo);
    }else if(btn1.attachEvent){
    btn1.attachEvent("onclick",demo)
    }else{
    btn1.onclick = demo();
    }
    function demo(){
    alert("Hello");
    }
    </script>
    </body>
    </html>
    三、事件對(duì)象
    1、事件對(duì)象:在觸發(fā)DOM事件的時(shí)候都會(huì)產(chǎn)生一個(gè)對(duì)象
    2、事件對(duì)象event:
    type:獲取事件類型
    target:獲取事件目標(biāo)
    stopPropagation():阻止事件冒泡
    preventDefault():阻止事件默認(rèn)行為
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <div id="div">
    <button id="btn1">按鈕</button>
    <a id="aid">百度</a>
    </div>
    <script>
    document.getElementById("btn1").addEventListener("click",showType);
    document.getElementById("div").addEventListener("click",showDiv);
    document.getElementById("aid").addEventListener("click",showA);
    function showType(event){
    // alert(event.type);
    alert(event.target);
    event.stopPropagation();//阻止事件冒泡
    }
    function showDiv(){
    alert("div")
    }
    function showA(event){
    // event.stopPropagation();
    // event.preventDefault();
    }
    </script>
    </body>
    </html>