亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript事件 "事件對象"的注意要點

2019-11-20 10:48:27
字體:
來源:轉載
供稿:網友

在觸發DOM上的某個事件時,會產生一個事件對象event。

DOM中的事件對象

兼容DOM的瀏覽器會將一個event對象傳入到事件處理程序中。event對象包含與創建它的特定事件有關的屬性和方法。除法的事件類型不一樣,可用的屬性方法就不一樣。不過,所有的事件都會有下表列出的成員。

下面列出了 2 級 DOM 事件標準定義的屬性:

  • bubbles: 返回布爾值,指示事件是否是起泡事件類型。
  • cancelable: 返回布爾值,指示事件是否可擁可取消的默認動作。
  • currentTarget: 返回其事件監聽器觸發該事件的元素。
  • eventPhase: 返回事件傳播的當前階段。
  • target: 返回觸發此事件的元素(事件的目標節點)。
  • timeStamp: 返回事件生成的日期和時間。
  • type: 返回當前 Event 對象表示的事件的名稱。

下面列出了 2 級 DOM 事件標準定義的方法。IE 的事件模型不支持這些方法:

  • initEvent(): 初始化新創建的 Event 對象的屬性。
  • preventDefault(): 通知瀏覽器不要執行與事件關聯的默認動作。
  • stopPropagation(): 不再派發事件。

this、target、currentTarget

在事件處理程序的內部,對象this始終等于currentTarget的值,而target則只包含事件的實際目標。如果直接將事件處理程序指定給了目標元素,則this、currentTarget和target包含相同的值。如:

var btn = document.querySelector("#btn");btn.onclick=function () { console.log(event.currentTarget === this); //true console.log(event.target === this); //true}

由于click事件的目標是btn按鈕,所以這三個值是相等的。如果事件處理程序在按鈕的父節點(document.body)中,那么這些值則不相同。如:

var btn = document.querySelector("#btn");document.body.onclick=function () { console.log(event.currentTarget === document.body); //true console.log(this === document.body); //true console.log(event.target === btn); //true 因為btn沒有注冊事件處理程序,所以該click事件就冒泡到了document.body}

在這里,this和currentTarget都是document.body,因為事件處理程序是注冊到這個元素上的。但是target元素卻等于按鈕元素,因為它是click事件的真正目標。由于按鈕并沒有注冊事件處理程序,結果click事件就冒泡到了document.body,在那里事件才能得到處理。

type

在需要通過一個函數處理多個事件時,可以使用type屬性。如:

//獲取按鈕var btn = document.querySelector("#btn");//設置多個事件var handler = function() {//檢測事件的類型 switch (event.type) {  case "click":   console.log("i click it");   break;  case "mouseover":   console.log("i enter it");   break;  case "mouseout":   console.log("i leave it");   break; }}//給響應的事件賦值btn.onclick = handler;btn.onmouseover = handler;btn.onmouseout = handler;preventDefault()

要阻止特定事件的默認行為,可以使用該方法。如:

var aTags = document.getElementsByTagName("a");for (var i = 0; i < aTags.length; i++) { var currentATag = aTags[i]; currentATag.onclick = function() {  event.preventDefault(); }};

以上代碼即屏蔽了網頁上全部的a標簽超鏈接功能。要注意的是,只有cancelable屬性設置為true的事件,才可以使用preventDefault()來取消其默認行為。

stopPropagation()

立即停止事件在DOM層次中的傳播,即取消進一步的事件捕獲或冒泡。例如,直接添加到一個按鈕的事件處理程序可以調用該方法,從而避免觸發注冊在document.body上面的事件處理程序。如:

var btn = document.getElementById("btn");btn.onclick = function () { console.log("btn clicked"); // event.stopPropagation();};window.onclick = function () { console.log("clicked");};//單擊一下的結果://btn clicked//clicked

又如:

var btn = document.getElementById("btn");btn.onclick = function () { console.log("btn clicked"); event.stopPropagation();};window.onclick = function () { console.log("clicked");};//單擊一下的結果://btn clicked

eventPhase

該屬性用來確定事件當前正位于事件流的哪個階段。

1、如果是捕獲階段則等于1;
2、如果是目標對象階段則等于2;
3、如果是冒泡階段則等于3;
如:

var btn = document.getElementById("btn");document.body.addEventListener("click", function() { console.log("bodyListener" + event.eventPhase);}, true) //捕獲階段btn.onclick = function() { console.log("btn" + event.eventPhase);} //目標對象階段,實際上屬于冒泡階段(在btn上)document.body.onclick = function() { console.log("body" + event.eventPhase);} //冒泡階段(在body上)

又如:

var btn = document.getElementById("btn");document.body.addEventListener("click", function() { console.log(event.eventPhase); //1 console.log(event.currentTarget); //HTMLBodyElement}, true);btn.addEventListener("click", function() { console.log(event.eventPhase); //2 console.log(event.currentTarget); //HTMLInputElement});document.body.addEventListener("click", function() { console.log(event.eventPhase); //3 console.log(event.currentTarget); //HTMLBodyElement});

流程大概是:

document.body 捕獲階段 --> btn 目標對象階段 --> document.body 冒泡階段

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91久久精品国产91性色| 国产一区二区在线免费视频| 色妞一区二区三区| 亚洲free性xxxx护士白浆| 日本精品久久电影| 国产z一区二区三区| 日韩av片永久免费网站| 国产成人精品一区二区三区| 美女撒尿一区二区三区| 欧美大肥婆大肥bbbbb| 亚洲精品suv精品一区二区| 久久成人在线视频| 日韩在线播放av| 欧美体内谢she精2性欧美| 日本中文字幕久久看| 中文字幕日韩av综合精品| 久久久久久久电影一区| 91av中文字幕| www国产亚洲精品久久网站| 热99在线视频| 日韩视频永久免费观看| 精品久久久久久久久久国产| 国产日韩av高清| 亚洲精品www久久久| 国产精品一久久香蕉国产线看观看| 亚洲乱亚洲乱妇无码| 欧美激情亚洲激情| 亚洲国产毛片完整版| 97精品国产97久久久久久春色| 久久久久久18| 性欧美长视频免费观看不卡| 欧美激情国内偷拍| 亚洲第一精品夜夜躁人人爽| 精品国产91乱高清在线观看| 亚洲va久久久噜噜噜久久天堂| 成人在线国产精品| 欧美激情第99页| 亚洲国产97在线精品一区| 亚洲成人在线视频播放| 欧美午夜影院在线视频| 色多多国产成人永久免费网站| 97香蕉久久夜色精品国产| 97超碰蝌蚪网人人做人人爽| 欧美日韩精品在线| 亚洲xxxxx性| 国产狼人综合免费视频| 中日韩美女免费视频网站在线观看| 国产精品久久在线观看| 亚洲三级免费看| 午夜精品久久久久久久久久久久久| 亚洲香蕉av在线一区二区三区| 亚洲一区二区三区乱码aⅴ| 精品亚洲国产视频| 亚洲综合成人婷婷小说| 中文字幕日韩在线播放| 中文字幕欧美日韩va免费视频| xxxxx成人.com| 欧美另类老女人| 国产极品精品在线观看| 久久影院中文字幕| 亲子乱一区二区三区电影| 亚洲一区二区三区成人在线视频精品| 亚洲人成电影网站色xx| 97在线免费视频| 亚洲最大成人网色| 久久亚洲欧美日韩精品专区| 欧美精品久久一区二区| 中文精品99久久国产香蕉| 亚洲欧洲一区二区三区在线观看| 91高清视频在线免费观看| 亚洲精品久久久一区二区三区| 亚洲中国色老太| 国产欧美精品一区二区三区-老狼| 亚洲第一中文字幕在线观看| 久久免费视频网站| 国产91精品黑色丝袜高跟鞋| 欧美成人高清视频| 欧美大片va欧美在线播放| 尤物九九久久国产精品的分类| 亚洲香蕉在线观看| 久久精品国产一区| 欧美色xxxx| 俺也去精品视频在线观看| 最近更新的2019中文字幕| 国产在线视频一区| 亚洲美女视频网站| 亚洲欧美国产va在线影院| 国产精彩精品视频| 久久精品视频网站| 国产精品视频xxx| 日韩av手机在线| 91九色单男在线观看| 精品综合久久久久久97| 在线观看中文字幕亚洲| 国产精品高清在线| 秋霞av国产精品一区| 国产va免费精品高清在线| 成人在线一区二区| 日韩av在线免播放器| 成人福利免费观看| 波霸ol色综合久久| 久久影视电视剧凤归四时歌| 亚洲成人黄色在线观看| 日韩一区二区欧美| 中文字幕少妇一区二区三区| 日韩电影中文字幕在线观看| 国产日韩在线免费| 亚洲国产欧美在线成人app| 国产视频观看一区| 色综合五月天导航| 成人日韩av在线| 色综合视频网站| 亚洲精品资源在线| 国产成人免费av电影| 日韩中文在线不卡| 欧美区二区三区| 国产精品色午夜在线观看| 国产精品久在线观看| 亚洲欧美中文另类| 欧美精品第一页在线播放| 亚洲精品久久久久久久久久久| 精品高清美女精品国产区| 亚洲在线观看视频| 日本国产一区二区三区| 国产精品美女久久久免费| 亚洲最新在线视频| 日韩大陆毛片av| 日韩中文字幕在线观看| 这里只有精品视频| 国产成人免费91av在线| 热99精品里视频精品| 日韩中文视频免费在线观看| 日韩av在线免费观看一区| 神马国产精品影院av| 欧美日韩美女在线| 欧美亚洲成人xxx| 亚洲精品午夜精品| 欧美孕妇与黑人孕交| 美日韩精品免费视频| 日韩电影在线观看中文字幕| 色综合天天综合网国产成人网| 亚洲美女免费精品视频在线观看| 美女黄色丝袜一区| 日韩av网站导航| 国产精国产精品| 九九精品在线播放| 久久精品久久久久电影| 性欧美办公室18xxxxhd| 国产精品激情自拍| 日韩成人在线观看| 超薄丝袜一区二区| 97国产成人精品视频| 亚洲美女喷白浆| 国产精品jvid在线观看蜜臀| 欧美激情国产精品| 欧美极品在线播放| 欧美成人午夜剧场免费观看| 在线视频欧美日韩精品| 亚洲日韩欧美视频一区| 亚洲天堂网在线观看| 日韩视频永久免费观看| 日韩二区三区在线| 久久久久亚洲精品| 欧美性视频在线|