相容性問題
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...