最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解JS DOM事件機制

 更新時間:2016年08月06日 09:48:40   投稿:jingxian  
下面小編就為大家?guī)硪黄钊肜斫釰S DOM事件機制。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1、事件流

html 元素觸發(fā)事件的順序。

2、事件冒泡IE的事件流叫做事件冒泡(event bubbling),即事件開始時由最具體的元素(文檔中嵌套層次最深的那個節(jié)點)接收,然后逐級向上傳播到較為不具體的節(jié)點(文檔)。3、事件捕獲事件捕獲的思想是不太具體的節(jié)點應該更早的接收到事件,而最具體的節(jié)點應該在最后接收到節(jié)點。事件捕獲的用意在于事件到達預定目標之前捕獲它。

DOM事件流
“DOM2級事件流”規(guī)定的事件流包括三個階段:事件捕獲階段、處于目標階段和冒泡階段。首先發(fā)生的是事件捕獲,為截獲事件提供了機會。然后是實際的目標接收到事件。最后一個階段是冒泡階段,可以在這個階段對事件作出響應。以簡單的HTML頁面為例,單擊<div>元素會按照下圖順序觸發(fā)事件。

在DOM事件流中,實際的目標(<div>元素)在捕獲階段不會接收到事件。這意味著在捕獲階段,事件從document到<html>再到<body>后就停止了。下一個階段是“處于目標”階段,于是事件在<div>上發(fā)生,并在事件處理中被看成冒泡階段的一部分。然后冒泡階段發(fā)生,事件又傳播回文檔。
多數(shù)支持DOM事件流的瀏覽器都實現(xiàn)了一種特定行為;即使“DOM2級事件”規(guī)范明確要求捕獲階段不會涉及事件的目標,但Safari、Chrome、Firefox和Opera9.5及更高版本都會在捕獲階段觸發(fā)事件對象上的事件。結果,就是有兩個機會在目標對象上面操作事件。

阻止事件冒泡

實驗

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title></title>
	<script type="text/javascript">
		function onBtn() {
			alert('button');
			//cancelBubble(); 阻止事件冒泡
		}
		//獲取事件對象
		function getEvent(){
			//如果為ie或chrome
			if(window.event){return window.event;}

			//針對firefox
			func = getEvent.caller; //獲取函數(shù)調用者
			while(func != null){
				var arg0 = func.arguments[0]; //獲取調用者第一個參數(shù)
				//判斷參數(shù)是否為空
				if(arg0){
					//判斷arg0是否為事件對象
				  if((arg0.constructor == Event || arg0.constructor == MouseEvent
				    || arg0.constructor == KeyboardEvent)
				    ||(typeof(arg0) == "object" && arg0.preventDefault
				    && arg0.stopPropagation)){
				     return arg0;
				   }
				}
				//獲取func調用者
				func = func.caller;
			}
			return null;
		}
		//阻止事件冒泡
		function cancelBubble() {
			event = getEvent();
			 // Firefox chrome
		  if(event.preventDefault) {  
		   
		    event.preventDefault();  
		    event.stopPropagation(); 

		   } else { 
		   	//ie 
		    event.cancelBubble=true;  
		    event.returnValue = false;
		   }  
		}
	</script>
</head>
<body onclick="alert('body')">
	<div onclick="alert('div');" style="background-color:green">
		<button onclick="onBtn()">dsd</button>
	</div>
</body>
</html>

上面的html代碼執(zhí)行的事件觸發(fā)順序。

默認情況: 依次會彈出 'button' ---》 彈出'div' -----》彈出'body'

如果加上cancelBubble()代碼:只會彈出'button'

以上這篇深入理解JS DOM事件機制就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 純javascript判斷查詢日期是否為有效日期

    純javascript判斷查詢日期是否為有效日期

    很多網(wǎng)站都涉及到輸入日期選項,如果客戶日期輸入錯誤,可能導入查詢不到甚至查詢到錯誤的信息,為了更好的滿足用戶需求,需要對日期進行校驗,下面給大家介紹使用純javascript如何判斷查詢日期是否為有效日期,需要的朋友可以參考下
    2015-08-08
  • JS中new?Blob()詳解及blob轉file示例

    JS中new?Blob()詳解及blob轉file示例

    這篇文章主要給大家介紹了關于JS中new?Blob()詳解及blob轉file的相關資料,Blob?Blob(Binary?Large?Object)表示二進制類型的大對象,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 微信小程序實現(xiàn)事件傳參與數(shù)據(jù)同步流程詳解

    微信小程序實現(xiàn)事件傳參與數(shù)據(jù)同步流程詳解

    這篇文章主要介紹了微信小程序開發(fā)中實現(xiàn)事件傳參與數(shù)據(jù)同步的詳細流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-10-10
  • js中用window.open()打開多個窗口的name問題

    js中用window.open()打開多個窗口的name問題

    這篇文章主要介紹了js中用window.open()打開多個窗口的問題,需要的朋友可以參考下
    2014-03-03
  • 原生js實現(xiàn)點擊按鈕復制內容到剪切板

    原生js實現(xiàn)點擊按鈕復制內容到剪切板

    這篇文章主要為大家詳細介紹了原生js實現(xiàn)點擊按鈕復制內容到剪切板,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • layui table 復選框跳頁后再回來保持原來選中的狀態(tài)示例

    layui table 復選框跳頁后再回來保持原來選中的狀態(tài)示例

    今天小編就為大家分享一篇layui table 復選框跳頁后再回來保持原來選中的狀態(tài)示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • 用javascript替換URL中的參數(shù)值示例代碼

    用javascript替換URL中的參數(shù)值示例代碼

    本篇文章主要是對用javascript替換URL中的參數(shù)值示例代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • Element-plus安裝及基礎組件使用詳解

    Element-plus安裝及基礎組件使用詳解

    ElementPlus是一個基于Vue3的UI組件庫,旨在提供豐富的HTML元素封裝,以簡化前端開發(fā),主要特點包括預定義樣式、事件處理、易用性等,為開發(fā)者提供了一致且美觀的用戶界面,同時支持按需導入,提高項目效率,感興趣的朋友一起看看吧
    2024-09-09
  • javascript中關于執(zhí)行環(huán)境的雜談

    javascript中關于執(zhí)行環(huán)境的雜談

    如你所知,javascript里執(zhí)行環(huán)境是作為一個最核心的概念存在的。相信廣大FE筒子們對于這個概念不會陌生,它定義了變量或函數(shù)有權訪問其他數(shù)據(jù)范圍以及其行為。
    2011-08-08
  • javascript動畫系列之模擬滾動條

    javascript動畫系列之模擬滾動條

    本文主要介紹了js動畫模擬滾動條的實現(xiàn)原理以及分享了通過滾動條實現(xiàn)的幾個應用的實例代碼:1.通過移動滾動條來實現(xiàn)數(shù)字的加減;2.通過拖動滾動條來實現(xiàn)元素尺寸的變化,以改變元素寬度為例;3.通過拖動滾動條來實現(xiàn)內容滾。需要的朋友一起來看下吧
    2016-12-12

最新評論

金溪县| 桑日县| 吐鲁番市| 安义县| 盐城市| 新巴尔虎左旗| 麻江县| 临桂县| 绍兴市| 宣化县| 治多县| 襄汾县| 常山县| 新安县| 卓尼县| 安庆市| 宁强县| 家居| 乡宁县| 常熟市| 荆门市| 托克逊县| 金堂县| 兴义市| 共和县| 大厂| 甘孜| 岐山县| 库车县| 崇仁县| 天镇县| 泽普县| 成武县| 灌南县| 离岛区| 雅江县| 义乌市| 和硕县| 桂阳县| 峨边| 蒲江县|