成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

zepto與focus/blur與事件委派

TNFE / 1596人閱讀

摘要:的處理事件注冊(cè)流程大致如下為了有事件冒泡以完成事件委派,一般情況下用代替在瀏覽器不支持的情況下,只能用在捕獲階段觸發(fā)回調(diào),間接做到事件委派。結(jié)果,就是有兩個(gè)機(jī)會(huì)在目標(biāo)對(duì)象上面操作事件。

--- focusin、focusout focus、blur
冒泡支持 支持 不支持
瀏覽器支持 現(xiàn)在所有瀏覽器都支持,但以前firefox52以下不支持 所有瀏覽器都支持
注冊(cè)focus事件

以下是經(jīng)簡(jiǎn)化后zepto處理注冊(cè)focus事件的代碼。運(yùn)行代碼,可以觀察到當(dāng)input獲得焦點(diǎn)時(shí)觸發(fā)了form注冊(cè)focus時(shí)的回調(diào)函數(shù)。




    
    foucus事件委派


代碼比較少,下面說(shuō)一下重點(diǎn)。

zepto的處理focus事件注冊(cè)流程大致如下

為了有事件冒泡以完成事件委派,一般情況下zepto用focusin、focusout代替focus、blur

在瀏覽器不支持focusin、focusout的情況下,只能用focus、blur在捕獲階段觸發(fā)回調(diào),間接做到事件委派。

IE9開始使用DOM事件模型,zepto統(tǒng)一用addEventListener注冊(cè)事件,不支持IE9以下的版本,zepto中的on方法內(nèi)部調(diào)用add方法,add方法經(jīng)過(guò)多步處理,最后是這樣注冊(cè)一個(gè)事件的

form.addEventListener(realEvent("focus"), callback, eventCapture());

zepto是用以下方式來(lái)判斷瀏覽器是否支持focusin事件

var focusinSupported = "onfocusin" in window

除了IE,其他瀏覽器的window對(duì)象中都沒(méi)有onfocusin屬性,其他瀏覽器中focusinSupported為false,但其他瀏覽器也支持focusin,用addEventListener("focusin")是有效的。下表是zepto注冊(cè)focus事件的兩個(gè)重要判斷

--- IE9+ FF、Chrome
realEvent focusinSupported:true, focus 轉(zhuǎn)換為 focusin focusinSupported:false,focus 不作轉(zhuǎn)換
eventCapture false,冒泡階段觸發(fā)回調(diào) true,捕獲階段觸發(fā)回調(diào)

在捕獲階段獲取目標(biāo)對(duì)象同樣可以實(shí)現(xiàn)事件委派,原因可以參考以下引用

即使"DOM2級(jí)事件"規(guī)范明確要求捕獲階段不會(huì)涉及事件目標(biāo)(作者注釋:即event.target),但I(xiàn)E9、Safari、Chrome、Firefox 和 Opera9.5及更高版本都會(huì)在捕獲階段觸發(fā)事件對(duì)象上的事件。結(jié)果,就是有兩個(gè)機(jī)會(huì)在目標(biāo)對(duì)象上面操作事件。 

<>第三版 13.1.3 DOM事件流 p348

注冊(cè)focusin事件

除了IE9-,在zepto中,其他主流瀏覽器都可以注冊(cè)focusin事件

總結(jié)

現(xiàn)在所有瀏覽都已經(jīng)支持foucsin,未來(lái)屬于支持冒泡的focusin

參考

MDN focusin瀏覽器支持

<>第三版 13.1.3 DOM事件流

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92830.html

相關(guān)文章

  • Zepto源碼之Event模塊

    摘要:不支持事件冒泡帶來(lái)的直接后果是不能進(jìn)行事件委托,所以需要對(duì)和事件進(jìn)行模擬。調(diào)用函數(shù),分隔出參數(shù)的事件名和命名空間。這里判斷是否為函數(shù),即第一種傳參方式,調(diào)用函數(shù)的方法,將上下文對(duì)象作為的第一個(gè)參數(shù),如果存在,則與的參數(shù)合并。 Event 模塊是 Zepto 必備的模塊之一,由于對(duì) Event Api 不太熟,Event 對(duì)象也比較復(fù)雜,所以乍一看 Event 模塊的源碼,有點(diǎn)懵,細(xì)看下...

    vpants 評(píng)論0 收藏0
  • zepto.js學(xué)習(xí)如何手動(dòng)(trigger)觸發(fā)DOM事件

    摘要:好啦我們已經(jīng)解決了是啥的疑問(wèn)了,現(xiàn)在回去開始一步步解讀如何實(shí)現(xiàn)手動(dòng)觸發(fā)事件。我們主要看看這里面幾乎含有如何手動(dòng)觸發(fā)一個(gè)事件的大部分步驟和內(nèi)容。 前言 前端在最近幾年實(shí)在火爆異常,vue、react、angular各路框架層出不窮,咱們要是不知道個(gè)雙向數(shù)據(jù)綁定,不曉得啥是虛擬DOM,也許就被鄙視了?;馃岬谋澈笸彩菬o(wú)盡的浮躁,學(xué)習(xí)這些先進(jìn)流行的類庫(kù)或者框架可以讓我們走的更快,但是靜下心...

    spacewander 評(píng)論0 收藏0
  • zepto.js學(xué)習(xí)如何手動(dòng)(trigger)觸發(fā)DOM事件

    摘要:好啦我們已經(jīng)解決了是啥的疑問(wèn)了,現(xiàn)在回去開始一步步解讀如何實(shí)現(xiàn)手動(dòng)觸發(fā)事件。我們主要看看這里面幾乎含有如何手動(dòng)觸發(fā)一個(gè)事件的大部分步驟和內(nèi)容。 前言 前端在最近幾年實(shí)在火爆異常,vue、react、angular各路框架層出不窮,咱們要是不知道個(gè)雙向數(shù)據(jù)綁定,不曉得啥是虛擬DOM,也許就被鄙視了?;馃岬谋澈笸彩菬o(wú)盡的浮躁,學(xué)習(xí)這些先進(jìn)流行的類庫(kù)或者框架可以讓我們走的更快,但是靜下心...

    fuyi501 評(píng)論0 收藏0
  • zepto.js學(xué)習(xí)如何手動(dòng)(trigger)觸發(fā)DOM事件

    摘要:好啦我們已經(jīng)解決了是啥的疑問(wèn)了,現(xiàn)在回去開始一步步解讀如何實(shí)現(xiàn)手動(dòng)觸發(fā)事件。我們主要看看這里面幾乎含有如何手動(dòng)觸發(fā)一個(gè)事件的大部分步驟和內(nèi)容。 前言 前端在最近幾年實(shí)在火爆異常,vue、react、angular各路框架層出不窮,咱們要是不知道個(gè)雙向數(shù)據(jù)綁定,不曉得啥是虛擬DOM,也許就被鄙視了?;馃岬谋澈笸彩菬o(wú)盡的浮躁,學(xué)習(xí)這些先進(jìn)流行的類庫(kù)或者框架可以讓我們走的更快,但是靜下心...

    Julylovin 評(píng)論0 收藏0
  • 窺探zepto事件模塊

    摘要:寫在前面通過(guò)本文,您可以了解的事件模塊,之后到底發(fā)生了什么樣的事情,如何實(shí)現(xiàn)的事件委托,如何實(shí)現(xiàn)的自定義事件等問(wèn)題。個(gè)人理解這么做目的在于便于移除事件,這樣就可以使用匿名函數(shù),而且仍可以將該匿名函數(shù)移除。 寫在前面 通過(guò)本文,您可以了解zepto的事件模塊,$(selector).on之后到底發(fā)生了什么樣的事情,如何實(shí)現(xiàn)的事件委托【$(selector).delegate】,如何實(shí)現(xiàn)的...

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

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

0條評(píng)論

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