精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

DOM事件深入淺出(二)

開發 前端
在DOM事件深入淺出(一)中,我主要給大家講解了不同DOM級別下的事件處理程序,同時介紹了事件冒泡和捕獲的觸發原理和方法。本文將繼續介紹DOM事件中的知識點,主要側重于DOM事件中Event對象的屬性和方法。

[[173536]]

在DOM事件深入淺出(一)中,我主要給大家講解了不同DOM級別下的事件處理程序,同時介紹了事件冒泡和捕獲的觸發原理和方法。本文將繼續介紹DOM事件中的知識點,主要側重于DOM事件中Event對象的屬性和方法。

那么什么是DOM事件中Event對象呢?事件對象(event object)指的是與特定事件相關且包含該事件詳細信息的對象。我們可以通過傳遞給事件處理程序的參數獲取事件觸發后所產生的一系列方法和屬性。

Event對象

Event對象其實是一個事件處理程序的參數,當調用事件時,我們只需要將其傳入事件函數就可以獲取。代碼如下:

  1. function getEvent(event) { 
  2.  
  3. event = event || window.event; 
  4.  
  5.  

上面的事件函數傳入了一個名叫Event的參數作為事件對象,同時做了瀏覽器兼容處理。在IE8及以前本版之中,通過設置屬性注冊事件處理程序時,調用的時候并未傳遞事件對象,需要通過全局對象window.event來獲取。所以上述代碼中我們利用 || 來做判斷,如果event對象存在則使用event,不存在則使用window.event。

Event對象包含了幾個方法和多個屬性,通過這些方法和屬性我們可以獲取事件的詳細信息并進行相關處理。

Event對象方法

Event對象主要有以下兩個方法,用于處理事件的傳播(冒泡、捕獲)和事件的取消。

1.stopPropagation

stopPropagation方法主要用于阻止事件的進一步傳播,比如阻止事件繼續向上層冒泡。

  1. function getEvent(event) { 
  2.  
  3. event.stopPropagation(); 
  4.  
  5.  
  6. child.addEventListener('click', getEvent, false);  

如果你需要兼容IE8及以下版本瀏覽器,則需要利用cancelBubble來代替stopPropagation,因為低版本IE不支持stopPropagation方法。

  1. function getEvent(event) { 
  2.     event = event || window.event; 
  3.          
  4.     if (event.stopPropagation) { 
  5.         event.stopPropagation(); 
  6.     } else { 
  7.         event.cancelBubble = true
  8.     } 
  9.  

cancelBubble是IE事件對象的一個屬性,設置這個屬性為true能阻止事件進一步傳播。

2.perventDefault

perventDefault方法用于取消事件的默認操作,比如a鏈接的跳轉行為和表單自動提交行為就可以用perventDefault方法來取消。代碼如下:

  1. <a id="go" href="https://www.baidu.com/">禁止跳轉</a> 
  2. var go = document.getElementById('go'); 
  3.  
  4. function goFn(event) { 
  5.     event.preventDefault(); 
  6.  
  7.     console.log('我沒有跳轉!'); 
  8.  
  9. go.addEventListener('click', goFn, false);  

通過preventDefault,我們成功阻止了a鏈接的跳轉行為。不過,在IE9之前的瀏覽器中需要設置returnValue屬性為false來實現。如下:

  1. function goFn(event) { 
  2.     event = event || window.event; 
  3.      
  4.     if (event.preventDefault) { 
  5.         event.preventDefault(); 
  6.     } else { 
  7.         event.returnValue = false
  8.     } 
  9.      
  10.     console.log('我沒有跳轉!'); 
  11.  

除了以上Event對象的兩個主要方法,當前DOM事件規范草案在Event對象上還定義了另一個方法,命名為stopImmediatePropagation。

3.stopImmediatePropagation

和stopPropagation相比,stopImmediatePropagation同樣可以阻止事件的傳播,不同點在于其還可以把這個元素綁定的同類型事件也阻止了。如:

  1. var go = document.getElementById('go'); 
  2.  
  3. function goFn(event) { 
  4.     event.preventDefault(); 
  5.     event.stopImmediatePropagation(); // 阻止事件冒泡并阻止同類型事件 
  6.      
  7.     console.log('我沒有跳轉!'); 
  8.  
  9. function goFn2(event) { 
  10.     console.log('我是同類型事件!'); 
  11.  
  12. go.addEventListener('click', goFn, false); 
  13. go.addEventListener('click', goFn2, false);  

我們在a鏈接上繼續加了一個點擊事件,如果我們在goFn方法中添加了stopImmediatePropagation方法,那么goFn2方法將不會被執行,同時也不會將點擊事件冒泡至上層。

需要注意的是,stopImmediatePropagation目前一部分瀏覽器尚不支持,但是像jQuery這樣的庫封裝了跨平臺的stopImmediatePropagation方法。

Event對象屬性

與Event對象的方法相比,因Event對象的屬性相對較多,文本無法一一講解,所以主要介紹實際項目中常用的Event對象屬性。

1.type屬性

通過type我們可以獲取事件發生的類型,比如點擊事件我們獲取的是'click'字符串。

  1. var go = document.getElementById('go'); 
  2.  
  3.     function goFn(event) { 
  4.  
  5. console.log(event.type); // 輸出'click' 
  6.  
  7.  
  8. go.addEventListener('click', goFn, false);  

2.target屬性

target屬性主要用于獲取事件的目標對象,比如我們點擊a標簽獲取的是a標簽的html對象。

  1. var go = document.getElementById('go'); 
  2.  
  3. function goFn(event) { 
  4.  
  5.     var target = event.target; 
  6.  
  7.     console.log(target === go) // 返回true 
  8.  
  9.  
  10. go.addEventListener('click', goFn, false);  

在IE8及之前版本,我們需要使用srcElement而非target。兼容方案如下:

  1. function goFn(event) { 
  2.  
  3.     var event = event || window.event, 
  4.  
  5.     target = event.target || event.srcElement; 
  6.  
  7.     console.log(target === go) // 返回true 
  8.  
  9.  

3. 鼠標事件屬性

在用鼠標觸發事件時,主要的事件屬性包含鼠標的位置和按鍵的狀態,比如:clientX和clientY指定了鼠標在窗口坐標中的位置,button和which指定了按下的鼠標鍵是哪個。

  1. function moveFn(event) { 
  2.     console.log(event.screenX) // 獲取鼠標基于屏幕的X軸坐標 
  3.     console.log(event.screenY) // 獲取鼠標基于屏幕的Y軸坐標 
  4.     console.log(event.clientX) // 獲取鼠標基于瀏覽器窗口的X軸坐標 
  5.     console.log(event.clientY) // 獲取鼠標基于瀏覽器窗口的Y軸坐標 
  6.     console.log(event.pageX) // 獲取鼠標基于文檔的X軸坐標 
  7.     console.log(event.pageY) // 獲取鼠標基于文檔的Y軸坐標 
  8.  
  9. function clickFn(event) { 
  10.     console.log(event.button) // 獲取鼠標按下的鍵。非IE瀏覽器中0為鼠標左鍵,1為鼠標中鍵,2為鼠標右鍵 
  11.     console.log(event.which) // 獲取指定事件上哪個鍵盤鍵或鼠標按鈕被按下 
  12.  
  13. document.addEventListener('mouseover', moveFn, false); 
  14. document.addEventListener('click', clickFn, false);  

4.鍵盤事件屬性

在用鍵盤觸發事件時,主要的事件屬性包含鍵盤的按鍵keyCode和是否按下特殊鍵,比如:keyCode指定了按下鍵的鍵碼值,ctrlKey指定是否按下了ctrl鍵。

  1. function keyFn(event) { 
  2.     console.log(event.keyCode); // 獲取按下鍵的鍵碼值 
  3.     console.log(event.ctrlKey); // 獲取是否按下了ctrl鍵 
  4.     console.log(event.shiftKey); // 獲取是否按下了shift鍵 
  5.     console.log(event.altKey); // 獲取是否按下了alt鍵 
  6.     console.log(event.metaKey); // 獲取是否按下了meta鍵 
  7.  
  8. document.addEventListener('keyup', keyFn, false);  

類似的事件屬性還有表單事件屬性和window事件屬性等,這里不再做詳細介紹。有興趣的同學可以查閱相關資料。

總結

本文主要講解了DOM事件中Event對象的常用屬性和方法,同時也介紹了其在IE中的兼容性問題及解決方案。然而關于DOM事件的知識點遠不止這些,希望僅此能夠幫助初識DOM的開發者。

備注:文本參考自《Javascript權威指南》一書及慕課網教程《DOM事件揭秘》。

本文為勞卜原創文章,首發于微信公眾號:前端呼啦圈(Love-FED)

轉載請注明來自——微信公眾號:前端呼啦圈(Love-FED)

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2016-10-14 13:53:05

JavascriptDOMWeb

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2022-05-06 07:19:11

DOMDiff算法

2020-05-27 20:25:47

SpringSpringBoot數據

2021-07-20 15:20:02

FlatBuffers阿里云Java

2017-07-02 18:04:53

塊加密算法AES算法

2012-05-21 10:06:26

FrameworkCocoa

2019-01-07 15:29:07

HadoopYarn架構調度器

2022-09-26 09:01:15

語言數據JavaScript

2012-05-30 11:11:42

HTML5

2019-11-11 14:51:19

Java數據結構Properties

2009-11-30 16:46:29

學習Linux

2018-11-09 16:24:25

物聯網云計算云系統

2019-12-04 10:13:58

Kubernetes存儲Docker

2021-04-27 08:54:43

ConcurrentH數據結構JDK8

2022-11-09 08:06:15

GreatSQLMGR模式

2022-12-02 09:13:28

SeataAT模式

2012-02-21 13:55:45

JavaScript

2022-10-31 09:00:24

Promise數組參數
點贊
收藏

51CTO技術棧公眾號

成人性生交大片| 一区二区三区网站 | 粉嫩av性色av蜜臀av网站| 久久久久久久久成人| 精品福利在线看| 亚洲欧美日韩在线综合| 丰满人妻一区二区| 美女任你摸久久 | 亚洲ai欧洲av| 风流少妇一区二区三区91| 奇米一区二区三区av| 国产做受高潮69| 18啪啪污污免费网站| 51亚洲精品| 欧美性受xxxx| 日本www在线播放| 国产成人l区| 国产亲近乱来精品视频| 国产精品久久精品国产| 中文字幕在线播放av| 香蕉av777xxx色综合一区| 久久av在线播放| 日韩毛片无码永久免费看| 国产成人澳门| 日韩一区二区在线观看| 午夜在线观看av| 日韩影院在线| 亚洲图片一区二区| 黄色a级在线观看| 黄色影院在线播放| 91老师国产黑色丝袜在线| av一区二区三区免费| 在线视频 91| 久久精品网址| 98精品国产高清在线xxxx天堂| 卡通动漫亚洲综合| 久久亚洲国产| 中国china体内裑精亚洲片| 成人影视免费观看| 国产精品白丝一区二区三区| 欧美一区二区在线不卡| 99re6在线观看| 九九久久国产| 精品视频123区在线观看| 亚洲色欲综合一区二区三区| 国产伦子伦对白在线播放观看| 一区二区三区国产精品| 日本精品免费视频| 91精品久久久| 一区二区在线免费观看| 蜜臀av.com| av免费网站在线观看| 国产精品国产a| 伊人久久大香线蕉av一区| www.黄在线观看| 欧美激情一区不卡| 亚洲激情一区二区三区| av播放在线| 综合激情成人伊人| 亚洲天堂第一区| 另类视频在线| 亚洲第一av色| 欧美女人性生活视频| 超级碰碰久久| 在线观看av不卡| 最新天堂在线视频| 精品一区二区三区视频在线播放 | 成人在线电影在线观看视频| 这里只有精品久久| www欧美com| 国产精品激情| 欧美孕妇性xx| 久久精品国产亚洲av麻豆蜜芽| 秋霞国产午夜精品免费视频| 国产日韩精品电影| 国产夫妻在线观看| 91香蕉视频黄| 亚洲高清视频一区| av大片在线| 欧美日韩亚洲成人| 午夜免费高清视频| 欧美a级大片在线| 亚洲精品97久久| 蜜桃av乱码一区二区三区| 99精品美女| 国内免费精品永久在线视频| 无码免费一区二区三区| 国精产品一区一区三区mba桃花| 亚洲影院色在线观看免费| 免费av网站观看| 国产欧美精品一区二区色综合朱莉| 亚洲一区三区电影在线观看| 丁香花高清在线观看完整版| 91国偷自产一区二区三区观看 | 日韩中文理论片| 久久综合成人网| 青青草国产成人av片免费| 91国产在线播放| 国产三级在线免费观看| 一区二区久久久久久| 精品视频无码一区二区三区| 欧美专区一区| 中文字幕久热精品在线视频| 国产性生活网站| 久久福利视频一区二区| 精品视频一区二区| 1024在线播放| 欧美日韩免费视频| 亚洲成人日韩在线| 91精品精品| 国产999在线| 欧美 日韩 国产 成人 在线 91| 国产精品麻豆视频| 成人久久久久久久久| 无码国模国产在线观看| 亚洲一区二区黄| av中文在线播放| 丁香五精品蜜臀久久久久99网站| 色乱码一区二区三在线看| 91豆花视频在线播放| 91麻豆精品国产91久久久资源速度 | 国产精品美女一区二区三区| 日本日本19xxxⅹhd乱影响| 免费观看亚洲天堂| 久久久精品国产一区二区| 尤物视频免费观看| 91麻豆免费在线观看| 日韩精品一区二区免费| 精品一区二区三区亚洲| 日日狠狠久久偷偷四色综合免费| 国产91精品看黄网站在线观看| 懂色av一区二区夜夜嗨| ijzzijzzij亚洲大全| 精品福利在线| 中文字幕在线成人| av片免费观看| 久久久美女艺术照精彩视频福利播放| www.国产在线播放| 亚洲专区**| 欧美激情视频播放| 国产小视频免费观看| 亚洲精品乱码久久久久久黑人| 一级做a免费视频| 99久久精品费精品国产风间由美| 国产精品日韩在线观看| av在线天堂| 欧美色图天堂网| 纪美影视在线观看电视版使用方法| 视频一区在线播放| 性欧美videosex高清少妇| 欧美成人app| 色吧影院999| 一级做a爱片久久毛片| 日韩毛片精品高清免费| www.51色.com| 欧美日本久久| 国产综合 伊人色| 午夜不卡影院| 一本久久综合亚洲鲁鲁| 91九色蝌蚪91por成人| 亚洲三级在线免费| 岛国大片在线免费观看| 亚洲精品三级| 日本精品二区| 日韩av懂色| 欧美激情高清视频| 天堂av在线免费观看| 色八戒一区二区三区| 林心如三级全黄裸体| 国产精品一级黄| 国产极品在线视频| 日韩av在线播放网址| 亚洲一区中文字幕在线观看| 国产桃色电影在线播放| 日韩av在线网址| 中文字幕av免费观看| 亚洲视频狠狠干| 国模私拍在线观看| 日韩国产精品大片| 中文字幕乱码免费| 亚洲人成网77777色在线播放| 国产精品99久久久久久久久久久久| 日本视频不卡| 精品国产百合女同互慰| 中文字幕高清在线免费播放| 中文字幕亚洲欧美在线不卡| 国产国语老龄妇女a片| 性欧美videos另类喷潮| 偷拍盗摄高潮叫床对白清晰| 日韩精品导航| 91精品国产综合久久香蕉的用户体验| 牛牛精品在线| 色老头一区二区三区| 成人乱码一区二区三区| 在线国产电影不卡| 国产在线欧美在线| 国产精品国产自产拍高清av王其| zjzjzjzjzj亚洲女人| 美美哒免费高清在线观看视频一区二区| 美女在线免费视频| 国产在线观看91一区二区三区 | 亚洲激情六月丁香| 精品无码国产污污污免费网站| 激情亚洲综合在线| 免费av网址在线| 亚洲午夜91| 最新视频 - x88av| 亚洲小说图片| 高清免费日韩| 香蕉久久一区| 国产精品成久久久久三级| 欧美四级在线| yw.139尤物在线精品视频| 精彩国产在线| 亚洲精品久久久久久久久| av高清一区二区| 欧美性淫爽ww久久久久无| 久久国产精品免费看| 亚洲综合在线第一页| 久久国产高清视频| 国产精品久久久久久久久快鸭| 人妻无码中文久久久久专区| 国产在线看一区| 亚洲天堂2018av| 老司机免费视频久久| 日本国产在线播放| 欧美日韩网站| 波多野结衣三级在线| 成人精品亚洲| 色一情一区二区三区四区| 蜜桃国内精品久久久久软件9| 国产伦一区二区三区色一情| 秋霞影院一区| 亚洲精品免费网站| 国产色99精品9i| 91免费看片网站| **日韩最新| 91久久久久久久久久久久久| 欧美日韩视频免费看| 国产精品久久久久影院日本| 青青热久免费精品视频在线18| 日本国产一区二区三区| 人成在线免费网站| 欧美一级淫片丝袜脚交| 亚洲黄色免费av| 欧美在线亚洲一区| 香蕉视频亚洲一级| 国产成人拍精品视频午夜网站| 范冰冰一级做a爰片久久毛片| 97超级碰在线看视频免费在线看| а√在线中文在线新版| 欧美中文在线字幕| 成人软件在线观看| 国产精品久久久久aaaa九色| 精品三区视频| 成人a在线视频| 国语精品视频| 国产91aaa| 欧美三级电影在线| 日韩精品另类天天更新| 欧美肥老太太性生活| 日本免费在线视频观看| 亚洲天堂黄色| 欧美一级黄色片视频| 免费在线观看精品| 日日夜夜精品视频免费观看| 国产91丝袜在线18| 成人手机在线免费视频| 国产视频911| 潘金莲一级黄色片| 亚洲国产综合视频在线观看| 国偷自拍第113页| 欧美三片在线视频观看| 国产日韩一级片| 亚洲高清免费观看高清完整版| 日韩精品视频在线观看一区二区三区| 国产性色av一区二区| yellow91字幕网在线| 性欧美xxxx| 久久99国产精品二区高清软件| 91亚洲精品丁香在线观看| 欧洲亚洲视频| 亚洲一区二区精品在线观看| 欧美日韩一区二区三区四区在线观看 | av在线播放网| 欧美丰满少妇xxxxx| 二区三区不卡| 超碰97在线人人| 成人同人动漫免费观看| 中国丰满熟妇xxxx性| 日韩中文字幕亚洲一区二区va在线 | 热久久最新地址| 午夜宅男久久久| 国产91在线免费观看| 国产校园另类小说区| 看片网站在线观看| 欧美在线一区二区| 天堂在线观看视频| 久久久极品av| 2019年精品视频自拍| 国产一区二区三区黄| 91久久久精品国产| 日韩精品一区二区三区色欲av| 国产精品正在播放| 极品人妻videosss人妻| 精品国产91久久久| 精品久久久久久亚洲综合网站| 亚洲天堂免费在线| 嗯~啊~轻一点视频日本在线观看| 成人激情视频小说免费下载| 免费毛片在线不卡| 午夜免费福利小电影| 国产精品中文字幕欧美| 亚洲aaa视频| 色婷婷综合久久久| 污污网站在线免费观看| 久久99热精品这里久久精品| jizz久久久久久| 欧美少妇一区| 99精品国产99久久久久久福利| 最好看的中文字幕| 成人免费视频在线观看| 中国黄色一级视频| 亚洲天堂成人在线视频| 中文字幕在线视频网站| 国产主播一区二区三区四区| 亚洲午夜精品久久久久久app| 天天综合天天添夜夜添狠狠添| 国产肉丝袜一区二区| 中文字幕国产在线观看| 日韩av在线免费看| 深夜成人在线| 国产亚洲精品自在久久| 亚洲三级网站| 妖精视频一区二区| 亚洲福利国产精品| 秋霞欧美在线观看| 韩国福利视频一区| 精品国产午夜肉伦伦影院| 免费在线看黄色片| 波多野结衣一区二区三区| 久一区二区三区| 日韩美女视频一区二区在线观看| av色综合久久天堂av色综合在| 成人欧美一区二区三区黑人孕妇 | 久久天堂电影网| 国产电影一区二区| 狠狠精品干练久久久无码中文字幕| 国产在线精品一区二区| 国产女人18水真多毛片18精品| 欧美一区二区在线播放| 女子免费在线观看视频www| 国产日韩一区二区三区| 国产一区导航| 亚洲 小说 欧美 激情 另类| 日本福利一区二区| 9色在线视频| 国产日本欧美在线观看| 一本精品一区二区三区| 91精品人妻一区二区三区蜜桃2| 亚洲影院理伦片| 桃花色综合影院| 国产精品99久久久久久久久| 性欧美欧美巨大69| 熟妇高潮一区二区| 色婷婷av一区| 日本美女高清在线观看免费| 147欧美人体大胆444| 国产亚洲激情| 99久久99久久精品免费看小说.| 欧美精品国产精品| www.综合网.com| 日韩欧美第二区在线观看| 精品一区二区在线视频| 精品无码久久久久| 亚洲欧美综合图区| 亚洲色图综合| 日本少妇高潮喷水视频| 国产欧美日韩不卡免费| 性生活视频软件| 国产91色在线|| 香蕉视频国产精品| 中文字幕 亚洲一区| 欧美三级中文字幕| 成人免费一区二区三区牛牛| 午夜精品一区二区在线观看 | 欧美老熟妇乱大交xxxxx| 欧美色窝79yyyycom| 国产美女福利在线观看| 神马影院我不卡午夜| 国产99久久久国产精品| 久久久久久久久久成人| 欧美激情一区二区三区久久久| 久久不见久久见中文字幕免费 | 国产亚洲综合视频| 国产精品理论片在线观看| 无码h黄肉3d动漫在线观看| 亚洲专区在线视频| 日本美女一区二区三区视频| 日韩欧美视频在线免费观看|