亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

javaScriptDOM事件學習

張利勇 / 901人閱讀

摘要:不加入布爾值的原因是只支持事件冒泡跨瀏覽器解決添加事件移除事件獲取事件對象阻止事件冒泡阻止事件默認行為事件對象在觸發(fā)上的事件都會產(chǎn)生一個對象。

什么是事件

事件流——描述的是從頁面中接受事件的順序。
事件冒泡:由具體的元素接收逐級傳遞到最不具體的那一個節(jié)點。
事件捕獲:由不太具體的節(jié)點應該更早接收到事件,而最具體的節(jié)點最后接收到事件

使用事件處理程序

html事件處理程序。缺點:html代碼和js代碼緊密耦合。

DOM0級事件處理程序。

DOM2級事件處理程序。

DOM2級事件處理程序定義了兩個方法:用于處理指定和刪除事件處理程序。
addEventListener()和removeEventListener()

接收三個參數(shù):要處理的事件名,作為事件處理程序的函數(shù)和布爾值

//btn3.addEventListener("click",message,false);  

IE事件處理程序

attachEvent()添加事件, detachEvent()刪除事件
接收相同的兩個參數(shù):事件處理程序的名稱和時間處理程序的函數(shù)。不加入布爾值的原因是IE8只支持事件冒泡

跨瀏覽器解決

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] = handler;
                }
            }
            //獲取事件對象
            getEvent:function(event){
                return event?event:window.event;
            },
            getType:function(event){
                return event.type;
            },
            getTarget:function(event){
                if(event.target){
                    return event.target;
                }
                else{
                    return event.srcElement;
                }
            },
            //阻止事件冒泡
            getStopPropagetion:function(event){
                if(event.stopPropagation){
                    return event.stopPropagation();
                }
                else{
                    return event.cancelBubble=true;
                }
            },
            //阻止事件默認行為
            getPreventDefault:function(event){
                if(event.preventDefault){
                    return event.preventDefault();
                }
                else{
                    return event.returnValue=false;
                }
            }
        }
        eventUtil.addHandler(btn3,"click", message);
        eventUtil.removeHandler(btn3,"click", message);   
事件對象

在觸發(fā)DOM上的事件都會產(chǎn)生一個對象。
事件對象event

DOM中的事件對象。

(1)type屬性,獲取事件類型。event.type
(2)target屬性,獲取事件目標。
(3)stopPropagation()方法,用于阻止事件冒泡。
(4)preventDefault()方法,阻止事件的默認行為。

2.IE中的事件對象

(1)type屬性,獲取事件對象
(2)srcElement屬性,獲取事件對象
(3)cancelBubble=true方法,用于阻止事件冒泡
(4)returnValue=false ,阻止事件的默認行為。

事件類型

鼠標事件
MouseEvent對象

屬性 //鼠標事件發(fā)生時,鼠標的位置
    -clientX,clientY //和頁面的距離
    -screntX,screntY //和屏幕的距離
    -ctrlKey,shiftKey,altKey,metaKey //當事件觸發(fā)是,鍵盤是按下的,則為true
    -button(0,1,2) 

觸發(fā)順序


//一個窗口拖動的例子
//封裝一個獲取元素的方法,防止出現(xiàn)IE不兼容等問題
function getByClass(clsName,parent){
    var oParent = parent? document.getElementById(parent):document,
    eles = [],
    elements = oParent.getElementsByTagName("*");

    for(var i = 0, l = elements.length; i < l; i++){
        if(elements[i].className == clsName){
            eles.push(elements[i]);
        }
    }
    return eles;
}

window.onload = drag;


//在標題區(qū)按下
function drag(){
    var oTitile = getByClass("login_logo_webqq","loginPanel")[0];
    //移動
    oTitile.onmousedown = fnDown;
    //關閉窗口
    var oClose = document.getElementById("ui_boxyClose");
    oClose.onclick = function(){
        document.getElementById("loginPanel").style.display="none";
    }

}

//在頁面中移動
//釋放鼠標時停止移動
function fnDown(){
    var oDrag =  document.getElementById("loginPanel");

    document.onmousemove = function(event){
        event = event || window.event;//瀏覽器兼容
        oDrag.style.left = event.clientX + "px";
        oDrag.style.top = event.clientY + "px";
    }
    //釋放鼠標
    document.onmouseup = function(){
        document.onmousemove = null;
        document.onmouseup - null;
    }

}

鍵盤事件

事件代理

事件代理在JS世界中一個非常有用也很有趣的功能。當我們需要對很多元素添加事件的時候,可以通過將事件添加到它們的父節(jié)點而將事件委托給父節(jié)點來觸發(fā)處理函數(shù)。這主要得益于瀏覽器的事件冒泡機制

例子
//html
  • item1
  • item2
  • item3
  • item4
//js window.onload=function(){ var ulNode=document.getElementById("list"); ulNode.addEventListener("click",function(e){ if(e.target&&e.target.nodeName.toUpperCase()=="LI"){/*判斷目標事件是否為li*/ alert(e.target.innerHTML); } },false); }

為父節(jié)點添加一個click事件,當子節(jié)點被點擊的時候,click事件會從子節(jié)點開始向上冒泡。父節(jié)點捕獲到事件之后,通過判斷e.target.nodeName來判斷是否為我們需要處理的節(jié)點。并且通過e.target拿到了被點擊的Li節(jié)點。從而可以獲取到相應的信息,并作處理

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/80686.html

相關文章

  • 前端技術 博客文章、書籍 積累

    摘要:好多編輯器例如等都支持這樣的語法來快速的編寫代碼如何優(yōu)雅地使用把標簽放在結束標簽之后結束標簽之前的差別什么是響應式設計怎樣進行 書籍 《JavaScriptDOM編程藝術》《JavaScript高級程序設計》《JavaScript框架設計》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語言精粹(修訂版)》《JavaScript設計模式》《J...

    LiangJ 評論0 收藏0
  • 前端技術 博客文章、書籍 積累

    摘要:好多編輯器例如等都支持這樣的語法來快速的編寫代碼如何優(yōu)雅地使用把標簽放在結束標簽之后結束標簽之前的差別什么是響應式設計怎樣進行 書籍 《JavaScriptDOM編程藝術》《JavaScript高級程序設計》《JavaScript框架設計》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語言精粹(修訂版)》《JavaScript設計模式》《J...

    codercao 評論0 收藏0
  • 前端技術 博客文章、書籍 積累

    摘要:好多編輯器例如等都支持這樣的語法來快速的編寫代碼如何優(yōu)雅地使用把標簽放在結束標簽之后結束標簽之前的差別什么是響應式設計怎樣進行 書籍 《JavaScriptDOM編程藝術》《JavaScript高級程序設計》《JavaScript框架設計》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語言精粹(修訂版)》《JavaScript設計模式》《J...

    huayeluoliuhen 評論0 收藏0
  • JavaScript學習總結(九)事件詳解

    摘要:布爾值表示捕獲階段調用事件處理程序,表示冒泡階段通過對象的方法,也可以定義事件的回調函數(shù)。對象會被作為第一個參數(shù)傳遞給事件監(jiān)聽的回調函數(shù)。布爾默認值是,當設置成時用以取消事件的默認行為與中的相同。 其實這篇文章挺早之前就寫了,但是由于sf保存方面的bug,所以當時寫了一大堆,結果沒保存,覺得這個沒寫完是個不小的遺憾,今天正好有空,就給補充下了,也正好給我的javascript學習總結做...

    LiveVideoStack 評論0 收藏0
  • AI遇見SIEM,白山ATD革新企業(yè)安全大腦

    摘要:然而在中國,還處于比較初級的階段,很多企業(yè)對自身安全問題并沒有系統(tǒng)性的管理。年整個中國市場只有億人民幣的規(guī)模,這個數(shù)字相比中國經(jīng)濟對全球經(jīng)濟的占比是不相符的。 showImg(https://segmentfault.com/img/bV9xRN?w=865&h=950);作者簡介: 叢磊,白山合伙人兼工程副總裁2016年加入白山,主要負責云聚合產(chǎn)品的研發(fā)管理和云鏈產(chǎn)品體系構建等。20...

    gself 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<