国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

深入理解事件冒泡(Bubble)和事件捕捉(capture)

2019-11-20 09:52:19
字體:
來源:轉載
供稿:網友

事件的發生順序

假設在一個元素中又嵌套了另一個元素并且兩者都有一個onClick事件處理函數(event handler)。如果用戶單擊元素2,則元素1和元素2的單擊事件都會被觸發。但是哪一個事件先被觸發?哪一個事件處理函數會被首先執行?換句話說,事件的發生順序到底如何?如下圖是當點擊span元素區域是,三個點擊事件都會被觸發,但是先后順序是怎樣的呢?

<div onclick="func1">   <p onclick="func2">     <span onclick=""func3>     </span>   </p> </div>

兩種模型

對于這個事件的處理順序上,Netscape和微軟有兩種截然不同的處理方法:

•Netscape主張事件會從最外層開始發生,直到最具體的元素,這種事件發生順序被稱為捕獲型

•微軟則保持事件從最內部元素開始發生,然后一直向上傳播,這種事件順序被稱為冒泡型

這兩種事件順序是截然相反的。Explorer瀏覽器只支持冒泡事件,Mozilla,Opera7和Konqueror兩者都支持。而更古老的opera和iCab兩者都不支持

w3c

任何發生在w3c事件模型中的事件,首是進入捕獲階段,直到達到目標元素,再進入冒泡階段。

對于正常的web開發,可以選擇是在捕獲階段還是冒泡階段綁定事件處理函數,這是通過addEventListener()方法實現的,如果這個函數的useCapture參數是true,則在捕獲階段綁定函數,反之false,在冒泡階段綁定函數。

element.addEventListener(event, function, useCapture)

阻止冒泡

在正常的開發過程中,如果想要阻止事件的傳播,通過一個方法實現。

在微軟的模型中,你必須設置事件的cancelBubble的屬性為true

window.event.cancelBubble = true

在w3c模型中你必須調用事件的stopPropagation()方法

e.stopPropagation()

通過調用這些方法會阻止所有冒泡向外傳播。跨瀏覽器解決方案:

function doSomething(e) {  if (!e) {    var e = window.event;    e.cancelBubble = true;  }  if (e.stopPropagation) {    e.stopPropagation();  }}

以上這篇深入理解事件冒泡(Bubble)和事件捕捉(capture)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和林格尔县| 东兰县| 镇江市| 海门市| 南宁市| 容城县| 昂仁县| 丰镇市| 双牌县| 天水市| 邵阳县| 鹤壁市| 鹿泉市| 镇雄县| 从化市| 青河县| 搜索| 汉阴县| 江川县| 陆川县| 漠河县| 苏尼特右旗| 龙门县| 清丰县| 镶黄旗| 尉氏县| 洪江市| 井陉县| 岐山县| 广南县| 大新县| 威信县| 梧州市| 准格尔旗| 舟曲县| 山丹县| 拜泉县| 扬州市| 油尖旺区| 包头市| 阳信县|