摘要:事件捕獲團隊提出的,與事件冒泡相反。事件處理程序事件用戶或瀏覽器自身執行的某種動作。事件處理程序響應某個事件的函數。事件委托目的解決事件處理程序過多問題。流程創建事件對象初始化事件對象觸發事件
事件是將JavaScript與網頁聯系在一起的主要方式。事件流
事件流:從頁面中接收到事件的順序。事件冒泡
IE的事件流叫做事件冒泡:事件開始時由最具體 的元素(文檔中嵌套層次最深的那個節點)接收,然后逐級向上傳播到較為不具體 的節點(文檔)。
事件捕獲Netscape Communicator團隊提出的,與事件冒泡相反。
用意:在事件到達預定目標之前捕獲它。
DOM 事件流“DOM2 級事件”規定的事件流包括三個階段:事件捕獲階段、處于目標階段、事件冒泡階段。
事件處理程序事件:用戶或瀏覽器自身執行的某種動作。如:click、load、mouseover等。事件處理程序:響應某個事件的函數。
HTML事件處理程序
DOM0 級事件處理程序
添加
var btn = document.getElementById("myBtn"); btn.onclick = function (){ alert(this.id); }
刪除事件處理程序
btn.onclick = null;
DOM2 級事件處理程序
addEventListener(要處理的事件名, 作為事件處理程序的函數,布爾值)
removeEventListener(要處理的事件名, 作為事件處理程序的函數,布爾值)
布爾值:
true:在捕獲階段調用事件處理程序
false:在冒泡階段調用事件處理程序
var btn = document.getElementById("myBtn"); var hander = function(){ alert(this.id); }; // 添加事件處理程序 btn.addEventListener("click", hander, false); // 刪除事件處理程序 btn.removeEventListener("click", hander, false);
主要好處:可以添加多個事件處理程序,按照添加的順序觸發。
IE事件處理程序
attachEvent(事件處理程序名稱, 事件處理程序函數)
detachEvent(事件處理程序名稱, 事件處理程序函數)
var btn = document.getElementById("myBtn"); var hander = function(){ alert(this.id); }; // 添加事件處理程序 btn.attachEventr("onclick", hander); // 刪除事件處理程序 btn.detachEvent("onclick", hander);
主要好處:可以添加多個事件處理程序,按照添加相反的順序觸發。
跨瀏覽器的事件處理程序
addHander(要操作的元素, 事件名稱, 事件處理程序函數)
removeHander(要操作的元素, 事件名稱, 事件處理程序函數)
事件對象event事件對象
阻止事件捕獲、事件冒泡:
var btn = document.getElementById("myBtn"); btn.onclick = function(event){ alert("Clicked"); event.stopPropagation(); }; document.body.onclick = function(event){ alert("Body clicked"); };事件類型
UI事件:不一定與用戶操作有關的事件
DOMActive 不建議使用
load
unload
abort
error
resize
scroll
焦點事件
blur 失去焦點時 不會冒泡
DOMFocusIn 獲得焦點 冒泡
DOMFocusOut 失去焦點
focus 獲得焦點 不會冒泡
focusin
focusout
鼠標與滾輪事件
鍵盤與文本事件
keydown
keypress
keyup
復合事件
變動事件
HTML5 事件
設備事件
觸摸與手勢事件
事件性能事件處理程序是函數。
在JavaScript中,每個函數都是對象,都會占用內存。
內存中的對象越多,性能就越差。
事件委托目的:解決“事件處理程序過多”問題。
實現:利用了事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件。
使用事件委托,只需要在 DOM 樹中盡量最高的層次上添加一個事件處理程序。
如下例子,由于所有列表項都是這個元素"myLinks"的子節點,而且它們的事件會冒泡,所以單擊事件最終會被這個函數處理。
Event Delegation Example
從文檔中移除帶有事件處理程序的元素時,最好先手工移除事件處理程序。以免內存中留有“空事件處理程序”。
btn.onclick = null;
在卸載頁面之前,先通過 onunload事件處理程序移除所有事件處理程序。以免內存中留有“空事件處理程序”。
模擬事件在測試Web應用程序中,模擬觸發事件是一種極其有用的技術。
流程:
創建事件對象
初始化事件對象
觸發事件
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/103407.html
摘要:表示要執行外部文件的路徑或鏈接。由于規范要求腳本按照他們出現的先后順序執行,因此第一個延遲腳本會優先于第二個執行,二這兩個腳本會優先于事件執行。無論使用任何方式,只要不存在和屬性,瀏覽器都會按照元素在頁面中出現的先后順序依次解析。 元素屬性 屬性 定義 async 【可選】。可以異步加載,表示可以立即下載此腳本,但不影響頁面其他操作。只對外部腳本有效。 charset ...
摘要:十開放模式識別項目開放模式識別項目,致力于開發出一套包含圖像處理計算機視覺自然語言處理模式識別機器學習和相關領域算法的函數庫。 一、開源生物特征識別庫 OpenBROpenBR 是一個用來從照片中識別人臉的工具。還支持推算性別與年齡。使用方法:$ br -algorithm FaceRecognition -compare me.jpg you.jpg二、計算機視覺庫 OpenCVOpenC...
摘要:題目二答案會報錯未定義這段代碼中混合了函數聲明和函數表達式的形式,而函數實際上是綁定到了上而不是。除此之外函數聲明與函數表達式的語法其實是等價的。因此,在外層函數函數體內的兩個函數聲明,都會提升到之前執行。 這是我在Javascript微信公眾號上看到的一篇文章,覺得挺有意思的,所以轉載過來跟大家分享一下,同時,對這些題目也加上了一些我個人的理解,如果有不對的地方,請大家指正。 題目...
摘要:然而,雖然先生對無所不知,被譽為世界的愛因斯坦,但他的語言精粹并不適合初學者學習。即便如此,在后面我還是會建議把當做補充的學習資源。但目前為止,依然是學習編程的好幫手。周正則表達式,對象,事件,閱讀權威指南第,,,章。 既然你找到這篇文章來,說明你是真心想學好JavaScript的。你沒有想錯,當今如果要開發現代網站或web應用(包括互聯網創業),都要學會JavaScript。而面對泛...
閱讀 3295·2021-11-23 09:51
閱讀 948·2021-09-03 10:30
閱讀 3221·2021-08-31 09:40
閱讀 3282·2019-08-30 14:22
閱讀 907·2019-08-30 14:09
閱讀 2907·2019-08-30 13:21
閱讀 3244·2019-08-28 18:03
閱讀 2864·2019-08-26 13:44