国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

前端面試回顧(3)---事件綁定及相關(guān)兼容性問(wèn)題

stackvoid / 2980人閱讀

摘要:考察到的點(diǎn)主要在事件對(duì)象等。而且,事件對(duì)象在標(biāo)準(zhǔn)和瀏覽器中也有不同。事件對(duì)象兼容事件對(duì)象屬性的不同上面的代碼中就判斷了瀏覽器支持的情況,從而去適配標(biāo)準(zhǔn)瀏覽器和瀏覽器。基本到這里也就完成了事件的綁定和解綁的方法。

面試中常會(huì)問(wèn)到的一個(gè)問(wèn)題,事件委托,我覺(jué)得除了能夠看你對(duì)dom2事件的了解程度外,對(duì)瀏覽器的兼容也是有一定考察的。

考察到的點(diǎn)主要在addEventListener(),attachEvent(),事件對(duì)象等。
常見(jiàn)的考察方式是問(wèn)你如何在一個(gè)列表中,點(diǎn)擊某個(gè)li,就彈出被點(diǎn)擊li的索引,或者讓你實(shí)現(xiàn)類(lèi)似JQuery的on和off這兩個(gè)方法

簡(jiǎn)單來(lái)做,就可以給所有的li添加dom0級(jí)的事件,每個(gè)li都綁定一個(gè)onclick事件:

window.onload = function(){
    //dom0級(jí)的方式,直接為每個(gè)li綁定事件
    var ul = document.getElementById("ul");
    var lis = ul.querySelectorAll("li");
    for(var i = 0;i < lis.length;i++){
        (function(j){
            lis[j].onclick = function(e){
                alert(j+1);
            }
        })(i);
    }
}

這種方式很簡(jiǎn)單,但缺點(diǎn)也很明顯,其實(shí)可以利用事件冒泡,把事件綁定在li的父級(jí)ul上,在點(diǎn)擊之后,就會(huì)被ul的事件處理程序捕獲到,從而處理。
這里要注意的就是兼容問(wèn)題了,addEventListener并不被IE9以下的瀏覽器支持,與之對(duì)應(yīng)的是attachEvent方法。而且,事件對(duì)象在標(biāo)準(zhǔn)和IE瀏覽器中也有不同。

window.onload = function(){
    var ul = document.getElementById("ul");
    if(ul.addEventListener){
        ul.addEventListener("click",handler);
    }else if(ul.attachEvent){
        ul.attachEvent("onclick",handler);
    }

    function handler(e){
        var ul = document.getElementById("ul");
        var e = e || window.event;                //事件對(duì)象兼容
        var liList = ul.getElementsByTagName("li");
        for(var i = 0;i

上面的代碼中就判斷了瀏覽器支持的情況,從而去適配標(biāo)準(zhǔn)瀏覽器和IE瀏覽器。

如果是然你實(shí)現(xiàn)類(lèi)似JQuery的on方法和off方法,可以參考下面啊的代碼,這里統(tǒng)一參考js高程中的寫(xiě)法,定義一個(gè)EventUtil對(duì)象,來(lái)放這些方法。

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;
        }
    }
}

基本到這里也就完成了事件的綁定和解綁的方法。不過(guò)上面也說(shuō)到了,這里其實(shí)最主要的也在兼容性的處理上,就不得不提一下事件對(duì)象了,dom和IE中的事件對(duì)象還是有很大不同的。
常用的幾個(gè)如preventDefault(),stopPropagation(),target等,IE下均有不同的表示。見(jiàn)下

功能 標(biāo)準(zhǔn)瀏覽器相關(guān)屬性 IE相關(guān)屬性
事件的目標(biāo) target srcElement
取消事件默認(rèn)行為 preventDefault() returnValue
取消事件冒泡 stopPropagation() cancelBubble

剩下的就是利用這幾個(gè)屬性,擴(kuò)展一下EventUtil對(duì)象,來(lái)做兼容了。

var EventUtil = {
    getEvent : function(event){
        return event ? event : window.event;
    },
    getTarget : function(event){
        return event.target || event.srcElement;
    },
    preventDefault : function(event){
        if(event.preventDefault){
            event.preventDefault();
        }else{
            event.returnValue = false;
        }
    },
    stopPropagation : function(event){
        if(event.stopPropagation){
            event.stopPropagation();
        }else{
            event.cancelBubble = true;
        }
    }
}

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/89115.html

相關(guān)文章

  • 18年求職面經(jīng)總結(jié)

    摘要:年求職面經(jīng)及總結(jié)我的求職之路差不多走到盡頭了感覺(jué)真是精疲力盡了把這大半年的經(jīng)歷和面試總結(jié)寫(xiě)下來(lái)希望能給和我一樣在求職路上煎熬的人一點(diǎn)幫助先說(shuō)背景微電子科學(xué)與工程專(zhuān)業(yè)學(xué)過(guò)兩門(mén)和相關(guān)的課程語(yǔ)言和單片機(jī)這個(gè)專(zhuān)業(yè)的唯一好處就是大部分人并不知道這個(gè)專(zhuān) 18年求職面經(jīng)及總結(jié) 我的求職之路差不多走到盡頭了,感覺(jué)真是精疲力盡了.把這大半年的經(jīng)歷和面試總結(jié)寫(xiě)下來(lái),希望能給和我一樣在求職路上煎熬的人一點(diǎn)幫...

    zhangwang 評(píng)論0 收藏0
  • 18年求職面經(jīng)總結(jié)

    摘要:年求職面經(jīng)及總結(jié)我的求職之路差不多走到盡頭了感覺(jué)真是精疲力盡了把這大半年的經(jīng)歷和面試總結(jié)寫(xiě)下來(lái)希望能給和我一樣在求職路上煎熬的人一點(diǎn)幫助先說(shuō)背景微電子科學(xué)與工程專(zhuān)業(yè)學(xué)過(guò)兩門(mén)和相關(guān)的課程語(yǔ)言和單片機(jī)這個(gè)專(zhuān)業(yè)的唯一好處就是大部分人并不知道這個(gè)專(zhuān) 18年求職面經(jīng)及總結(jié) 我的求職之路差不多走到盡頭了,感覺(jué)真是精疲力盡了.把這大半年的經(jīng)歷和面試總結(jié)寫(xiě)下來(lái),希望能給和我一樣在求職路上煎熬的人一點(diǎn)幫...

    fjcgreat 評(píng)論0 收藏0
  • 前端面試題總結(jié)(js、html、小程序、React、ES6、Vue、算法、全棧熱門(mén)視頻資源)

    摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開(kāi)發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開(kāi)發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...

    pumpkin9 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<