JS高階 封裝註冊事件

2022-07-14 15:21:17 字數 1058 閱讀 2251

相容性問題

1、ele.on事件型別 = function(){}乙個元素ele註冊一種事件多次,會被替換成最後乙個,所以有侷限性

2、addeventlistener(事件型別,事件處理函式,usecapture) 第三個引數預設是false,冒泡階段執行

3、attachevent(事件型別,事件處理函式)

4、addeventlistener、attachevent在ie相容性問題上正好可以互補

基本函式封裝

<

script

>

//封裝成函式,問題是每次都會判斷

function

registeevent(target, type, handler)

else

if(target.attachevent)

else

}script

>

在註冊事件的時候,判斷瀏覽器的註冊事件的方式,然後直接使用該方式進行註冊事件,就像上面那樣,**復用性差

解決方案:

1、將註冊事件的**封裝到乙個函式中,在函式中返回函式,讓外部函式只執行一次,判斷也就只會執行一次

2、外部函式只需要呼叫一次就可以知道客戶瀏覽器的相容方式是什麼,然後利用這次返回的函式,註冊事件,可以重複的註冊

<

script

>

function

createeventregister()

}else

if(window.attachevent))}}

else}}

window.onload

=function

() )

}script

>

需要注意的是ie6的時候只能使用attachevent來解決相容性問題,但是attachevent,是不能夠在註冊的函式中傳入的引數event物件的,它的訪問形式都是window.event,此時我們可以使用call方法,修改傳入引數handler函式,將它的引數強行注入進去。

JS註冊事件

使用onload事件往往在body標籤上註冊,使用 nl ad function name 的方式 不過這種方式只能在ie上使用,若是再ff上,就失去了效果,導致頁面會有錯誤 解決這個問題可使用以下方法 if window.addeventlistener else if window.attach...

事件 《JS高階程式設計》

一 事件流 1.事件流描述的是從頁面中接收事件的順序 2.事件冒泡 event bubble 事件從開始時由最具體的元素 就是巢狀最深的那個節點 開始,逐級向上傳播到較為不具體的節點 就是document 點選這裡 如果點選了div元素,那麼這個click事件會按如下順序傳播 1.2.3.4.doc...

註冊事件,反註冊事件,匿名事件

根據資料動態建立控制項及為控制項動態繫結事件 事件不只乙個,包括匿名方法 現在要訂閱乙個新事件同時取消這個控制項的所有事件.改用反射實現,用反射獲得button的eventhandler,並對它進行反註冊。方法一。propertyinfo propertyinfo typeof button get...