国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Dom 事件詳解

DevTalking / 2079人閱讀

摘要:級事件規定事件流包括三個階段事件捕獲目標事件事件冒泡。返回布爾值,指示事件是否可擁可取消的默認動作。返回其事件監聽器觸發該事件的元素。返回當前對象表示的事件的名稱。不再派發事件常用于阻止事件冒泡。

事件是 JavaScript 與 HTML 交互的基礎。要實現用戶與頁面的交互,先要對目標元素綁定特定的事件、設置事件處理函數,然后用戶觸發事件,事件處理函數執行,產生交互效果。
DOM 事件級別

DOM 級別分為四個級別:DOM0 級、DOM1 級、DOM2 級、DOM3 級;



DOM 事件級別分為三個級別:

DOM0 級事件


缺點:無法設置多個事件處理函數

DOM2 級事件


可以為事件設置多個事件處理函數,可以通過第三個參數 ( useCapture ) 設置在什么階段執行事件處理函數,默認是 false, 即在事件冒泡階段執行事件處理函數。

需要注意的是在 IE8 及以下版本需要用 attachEventdetachEvent 實現,只有兩個參數,事件名需要以 on 開頭,只支持在事件冒泡階段執行事件處理函數。

DOM3 級事件

DOM3 級事件是在 DOM2 級事件的基礎上添加了更多的事件類型,允許自定義事件。

UI事件,當用戶與頁面上的元素交互時觸發,如:load、scroll

焦點事件,當元素獲得或失去焦點時觸發,如:blur、focus

鼠標事件,當用戶通過鼠標在頁面執行操作時觸發如:dbclick、mouseup

滾輪事件,當使用鼠標滾輪或類似設備時觸發,如:mousewheel

文本事件,當在文檔中輸入文本時觸發,如:textInput

鍵盤事件,當用戶通過鍵盤在頁面上執行操作時觸發,如:keydown、keypress

合成事件,當為IME(輸入法編輯器)輸入字符時觸發,如:compositionstart

變動事件,當底層DOM結構發生變化時觸發,如:DOMsubtreeModified

// 自定義事件
var event = new Event("test")
// 給元素綁定事件
domElement.addEventListener("test", function() {
    console.log("event test")
},)

// 觸發事件
setTimeout(function() {
    domElement.dispatchEvent(event)
}, 1000)
DOM 事件流
想象畫在一張紙上的一組同心圓。如果把手指放在圓心上,那么手指指向的不僅僅是一個圓,而是紙上的所有圓。所以如果點擊了某個按鈕,點擊事件不僅僅發生在這個按鈕上,整個頁面也被點擊了。

事件流又稱為事件傳播,描述的是從頁面中接收事件的順序。DOM2 級事件規定事件流包括三個階段: 事件捕獲(capturing phase)目標事件(target phase)、事件冒泡(bubbling phase)。


發生的順序是:事件捕獲階段 --> 目標事件階段 --> 事件冒泡階段

事件冒泡
事件開始時由最具體的元素(目標元素)接收,然后逐級向上傳播。


目標元素
父級元素

運行結果:


事件捕獲
事件按 window -> document -> html -> body -> ... -> 目標元素 的方向向下層元素傳遞。


目標元素
父級元素

運行結果:


![bubbling](https://user-gold-cdn.xitu.io...
)

事件對象參數 event
在用戶觸發事件,執行事件處理函數的時候,默認會向事件處理函數傳入一個 event 對象,它記錄了該事件的狀態和行為。
event 常用屬性和方法

type 事件類型

target 事件發出者(觸發事件的元素)

currentTarget

事件監聽者(被綁定事件的元素)

stopPropagation() 阻止事件冒泡或捕獲

preventDefault() 阻止瀏覽器默認行為

target 、currentTarget 與 this

當點擊 parent 時,輸出:

1 
...
2
...
3
...

當點擊 child 時,輸出:

1 
...
2
...
3
...
所以 target 是事件發出者,curentTarget 是事件監聽者,事件處理函數中的 this 等同于 e.currentTarget
event 對象的一些兼容性寫法

獲得 event

// 事件處理函數
function handleClick(event) {
    var e = event || window.event
    ···
}

獲得 target

···
var target = e.target || e.srcElement
···

阻止瀏覽器默認行為

···
e.preventDefault ? e.preventDefault() : (e.returnValue = false)
···

阻止冒泡

···
e.stopPropagation ? e.stopPropagation() : (e.cancelBubble = true)
···

事件綁定與解綁

function addEvent(element, type, fn) {
    element.addEventListener ? element.addEventListener(type, fn, false) : element.attachEvent("on"+ type, fn)
}

function removeEvent(element, type, fn) {
    element.removeEventListener ? element.removeEventListener(type, fn, false) : element.detachEvent("on"+ type, fn)
}
屬性表

基礎屬性

屬性 描述
altKey 返回當事件被觸發時,”ALT” 是否被按下。
button 返回當事件被觸發時,哪個鼠標按鈕被點擊。
clientX 返回當事件被觸發時,鼠標指針的水平坐標。
clientY 返回當事件被觸發時,鼠標指針的垂直坐標。
ctrlKey 返回當事件被觸發時,”CTRL” 鍵是否被按下。
metaKey 返回當事件被觸發時,”meta” 鍵是否被按下。
relatedTarget 返回與事件的目標節點相關的節點。
screenX 返回當某個事件被觸發時,鼠標指針的水平坐標。
screenY 返回當某個事件被觸發時,鼠標指針的垂直坐標。
shiftKey 返回當事件被觸發時,”SHIFT” 鍵是否被按下。

IE 屬性

屬性 描述
cancelBubble 如果事件句柄想阻止事件傳播到包容對象,必須把該屬性設為 true。
fromElement 對于 mouseover 和 mouseout 事件,fromElement 引用移出鼠標的元素。
keyCode 對于 keypress 事件,該屬性聲明了被敲擊的鍵生成的 Unicode 字符碼。對于 keydown 和 keyup
offsetX,offsetY 發生事件的地點在事件源元素的坐標系統中的 x 坐標和 y 坐標。
returnValue 如果設置了該屬性,它的值比事件句柄的返回值優先級高。把這個屬性設置為 false 可以阻止瀏覽器默認行為
srcElement 對于生成事件的 Window 對象、Document 對象或 Element 對象的引用。
toElement 對于 mouseover 和 mouseout 事件,該屬性引用移入鼠標的元素。
x,y 事件發生的位置的 x 坐標和 y 坐標,它們相對于用CSS動態定位的最內層包容元素。

標準 event 屬性(2級 DOM 事件標準定義的屬性)

屬性或方法 描述
bubbles 返回布爾值,指示事件是否是冒泡事件類型。
cancelable 返回布爾值,指示事件是否可擁可取消的默認動作。
currentTarget 返回其事件監聽器觸發該事件的元素。
eventPhase 返回事件傳播的當前階段。
target 返回觸發此事件的元素(事件的目標節點)。
timeStamp 返回事件生成的日期和時間。
type 返回當前 Event 對象表示的事件的名稱。
initEvent() 初始化新創建的 Event 對象的屬性。
preventDefault() 通知瀏覽器不要執行與事件關聯的默認動作。
stopPropagation() 不再派發事件(常用于阻止事件冒泡)。

閱讀原文

參考資料:

事件流理解

javascript event(事件對象)詳解

DOM 事件深入淺出(一)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109074.html

相關文章

  • Dom 事件詳解

    摘要:級事件規定事件流包括三個階段事件捕獲目標事件事件冒泡。返回布爾值,指示事件是否可擁可取消的默認動作。返回其事件監聽器觸發該事件的元素。返回當前對象表示的事件的名稱。不再派發事件常用于阻止事件冒泡。 事件是 JavaScript 與 HTML 交互的基礎。要實現用戶與頁面的交互,先要對目標元素綁定特定的事件、設置事件處理函數,然后用戶觸發事件,事件處理函數執行,產生交互效果。 DOM 事...

    xiaokai 評論0 收藏0
  • Dom 事件詳解

    摘要:級事件規定事件流包括三個階段事件捕獲目標事件事件冒泡。返回布爾值,指示事件是否可擁可取消的默認動作。返回其事件監聽器觸發該事件的元素。返回當前對象表示的事件的名稱。不再派發事件常用于阻止事件冒泡。 事件是 JavaScript 與 HTML 交互的基礎。要實現用戶與頁面的交互,先要對目標元素綁定特定的事件、設置事件處理函數,然后用戶觸發事件,事件處理函數執行,產生交互效果。 DOM 事...

    CodeSheep 評論0 收藏0
  • JavaScript學習總結(九)事件詳解

    摘要:布爾值表示捕獲階段調用事件處理程序,表示冒泡階段通過對象的方法,也可以定義事件的回調函數。對象會被作為第一個參數傳遞給事件監聽的回調函數。布爾默認值是,當設置成時用以取消事件的默認行為與中的相同。 其實這篇文章挺早之前就寫了,但是由于sf保存方面的bug,所以當時寫了一大堆,結果沒保存,覺得這個沒寫完是個不小的遺憾,今天正好有空,就給補充下了,也正好給我的javascript學習總結做...

    LiveVideoStack 評論0 收藏0
  • JavaScript系列之事件詳解

    摘要:響應某個事件的函數就叫事件處理程序或事件偵聽器。為事件指定事件處理程序的方法主要有種。事件處理程序事件直接加在元素上。事件委托利用冒泡的原理,把事件加到父元素或祖先元素上,觸發執行效果,解決事件處理程序過多問題。事件委托優點提高性能。 JavaScript簡單入門可以看看我丑丑的Github博客JavaScript簡單入門 事件 JavaScript與HTML之間的交互是通過事件實現的...

    pakolagij 評論0 收藏0
  • js事件詳解

    摘要:使用級方法指定的事件處理程序被認為是元素的方法。用于立即停止事件在中的傳播,取消進一步的事件捕獲或冒泡。捕獲事件目標對象冒泡只有在事件處理程序執行期間,對象才會存在,執行完成后,對象就會被銷毀。 引用 事件是我認為前端最特別的地方,這是唯一其他語言不一樣的地方,我們通過它與頁面進行交互。 事件流 事件流描述的是從頁面中接收事件的順序。IE和網景團隊提出流相反的事件流概念。IE事件流是事...

    AlienZHOU 評論0 收藏0

發表評論

0條評論

DevTalking

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<