DOM事件處理

2021-07-04 07:26:04 字數 1744 閱讀 6526

一、事件流

可以形象理解為:當我們指向一組同心圓的圓心時,所指的其實是這一組同心圓,而不只是同心圓組中位於最裡層的圓

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...