一、事件流
可以形象理解為:當我們指向一組同心圓的圓心時,所指的其實是這一組同心圓,而不只是同心圓組中位於最裡層的圓
1.事件冒泡:觸發事件的標籤(即最裡層的標籤)最先感知到事件的發生,然後逐層向外傳遞事件,
2.事件捕獲:與事件冒泡的感知方向正好相反,現在很少用
二、事件處理程式
1.html事件處理程式
在html標籤中設定觸發事件、並呼叫js方法
缺點:html和js的耦合度太高,不利於更改
2.dom0級事件處理程式(較傳統的方式)
把乙個函式賦值給乙個事件的處理程式屬性
用的較多的方法,簡單,跨瀏覽器優勢
優點:乙個按鈕上可以新增多個事件處理程式,也可以新增多個事件
3.dom2級事件處理程式
定義了兩個方法:addeventlistener和removeeventlistener
接收三個引數:要處理的事件名、作為事件處理程式的函式名(觸發的函式名)、bool值(為false時代表以事件冒泡形式觸發)
優點:乙個按鈕上可以新增多個事件處理程式,也可以新增多個事件(同dom0)
缺點:不適用於ie瀏覽器
4.ie事件處理程式
定義了兩個方法:attachevent和detachevent
接收兩個引數:要處理的事件名、作為事件處理程式的函式名(觸發的函式名)--ie8及更早的版本只支援事件冒泡
適用於ie和opera
5.瀏覽器相容的解決
封裝乙個物件,物件中封裝兩個方法--新增控制代碼和刪除控制代碼,方法傳入三個引數:事件型別、觸發的元素、事件處理函式
三、事件物件(event)
ie8之前的瀏覽器,要用window.event獲取事件,其它瀏覽器可以直接用event(也可以用e,ev)獲取。直接獲取的就是我們用滑鼠或鍵盤所做的操作(即事件)。
1.dom中的事件物件
常用屬性:
type:用於獲取事件型別
target:用於獲取事件目標(即事件來自於哪個元素--event.target.nodename可以獲取到當前事件所屬標籤的名稱)
常用方法:
stoppropagation():用於阻止事件冒泡
preventdefault():用於阻止事件的預設行為(如:對於標籤,除了我們給它新增的事件外,它還有乙個自己預設的行為,就是href鏈結跳轉。如果對於我們指定的事件,我們只希望執行自己指定的函式,而不執行預設的href跳轉,我們就需要在事件觸發的函式中,新增event.preventdefault();這個語句,用來阻止預設跳轉行為發生)
2.ie中的事件物件
常用屬性:
type:用於獲取事件型別
srcelement:用於獲取事件目標(即事件來自於哪個元素)
cancelbubble:
用於阻止事件冒泡(阻止時,設定cancelbubble=true;)
returnvalue:用於阻止事件的預設行為(預設為true,要阻止預設行為時,設定returnvalue=false;)
DOM 中的事件處理
根據 w3c dom 2 events 描述,eventtarget 介面被所有支援 dom 事件模型的節點 node 實現。該介面提供了 addeventlistener 和 removeeventlistener 方法,用來繫結或解綁乙個 eventlisteners 介面到乙個 eventta...
js高程 dom 和 dom 事件處理標誌
dom pc js dom document.getelementbyid d1 style.csstext color red font size 13px w3c dom2 事件 var btn2 document.getelementbyid btn2 function handlers fu...
DOM 中的事件處理介紹
該介面提供了 addeventlistener 和 removeeventlistener 方法,用來繫結或解綁乙個 eventlisteners 介面到乙個 eventtarget。dom 2 events 中定義了 event 介面,用來提供事件的上下文資訊,它提供了若干標準屬性和方法。實現 e...