精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

天天操天天爱天天爽| 国产欧美日韩中文| 影音先锋黄色资源| 美女写真久久影院| 亚洲视频在线观看三级| 国产精品一区二区三区在线观 | 亚洲欧美乱综合| 国产日产精品一区二区三区四区| 精品久久久久久久久久久久久久久久| 日韩一区欧美| 日韩激情视频在线| 日韩欧美亚洲另类| 裤袜国产欧美精品一区| 亚洲视频免费看| 欧美不卡三区| www.激情五月.com| 日韩精品乱码av一区二区| 欧美老女人性视频| 天天干天天舔天天操| 香港久久久电影| 欧洲av一区二区嗯嗯嗯啊| 中文字幕の友人北条麻妃| 激情在线视频| 成人国产精品视频| 国产在线精品一区免费香蕉| 久久久久久少妇| 国产精品xvideos88| 一区二区三区久久精品| 完美搭档在线观看| av一级久久| 欧美视频中文字幕| 日本一极黄色片| 九色porny自拍视频在线播放| 亚洲色图另类专区| 亚洲欧洲精品一区| 美女做暖暖视频免费在线观看全部网址91 | 99精品视频在线播放免费| 视频在线观看一区| 17婷婷久久www| 久久婷婷国产麻豆91| 久久久久久久久久久久久久 | 成人看片免费| 国产精品三级av在线播放| 秋霞久久久久久一区二区| 日韩av视屏| 91香蕉视频污在线| 国产欧美日韩一区二区三区| 亚洲精品911| 国产成人综合网站| 97久久人人超碰caoprom欧美| 一级黄色大片免费观看| 全国精品久久少妇| 国产精品日韩在线观看| 成人免费一区二区三区| 青青国产91久久久久久| 91超碰caoporn97人人| 精品成人久久久| 国产欧美精品久久| 欧美中文字幕在线| 亚洲 欧美 日韩 在线| 视频在线观看91| 国产精品久久久91| 中文字幕av网站| 久久99热99| 91精品网站| 欧美一级一区二区三区| 99久久国产综合精品色伊| 精品国产乱码久久久久久久软件| 五月婷婷伊人网| 久久久久久99久久久精品网站| 欧美日本韩国一区二区三区| 国产免费av高清在线| 中文字幕欧美三区| 日本丰满少妇黄大片在线观看| a级毛片免费观看在线| 亚洲综合一区二区精品导航| 久久国产精品网| 在线视频cao| 欧美日韩一区二区三区不卡| 999这里有精品| 综合久久成人| 精品偷拍各种wc美女嘘嘘| 精品人伦一区二区| 午夜电影亚洲| 欧美中文字幕在线| 91麻豆成人精品国产| 国产成人综合自拍| 日韩av一级大片| 成人短视频在线观看| 亚洲第一综合色| 热久久精品免费视频| 精品成人18| 日韩精品视频在线免费观看 | 天堂中文在线资| 久久精品网站免费观看| 在线观看av的网址| 香蕉久久免费电影| 日韩视频一区在线观看| 成年人在线观看av| 亚洲色图二区| 日av在线播放中文不卡| 国产毛片久久久久| 26uuu亚洲综合色| 欧美xxxx吸乳| 日本综合字幕| 精品久久久久久久久久久久久久久久久| 五月婷婷综合在线观看| 欧美1区2区| 国产精品久久久久高潮| 天天综合网在线观看| 亚洲欧洲日产国码二区| 日韩精品一区二区三区久久| 免费欧美网站| 中文字幕精品在线视频| 久久国产视频播放| 国产乱子伦视频一区二区三区| 久久久久一区二区三区| 污视频在线看网站| 欧美日韩视频第一区| 中文字幕日韩三级片| 欧美成人有码| 国产免费一区二区三区在线观看| 天天干天天摸天天操| 亚洲女人****多毛耸耸8| 国产一线二线三线在线观看| 欧美wwwwww| 欧美老女人性视频| 国产精品久久无码一三区| 久久久亚洲午夜电影| 国产69精品久久久久999小说| 中文成人激情娱乐网| 亚洲性猛交xxxxwww| 欧美日韩乱国产| 国产成人精品免费看| 中文字幕一区二区三区四区五区人| 色香欲www7777综合网| 亚洲激情视频网| 国产无遮无挡120秒| 国产精品99久久久久久久vr | 日韩视频一区| 国产精品久久久久久久久久久久冷 | 久久久久久免费看| jizz久久精品永久免费| 欧美理论电影在线观看| 国产农村妇女毛片精品久久| 国产精品国产自产拍高清av | 丁香桃色午夜亚洲一区二区三区| 99亚洲精品视频| 精品中文字幕一区二区三区四区| 日韩色av导航| 99精品在线视频观看| 亚洲精品少妇30p| 久久久精品人妻一区二区三区| 亚洲国产一成人久久精品| 91九色国产视频| 91蜜桃在线视频| 精品日韩欧美在线| 国产一区二区三区影院| 久久蜜桃香蕉精品一区二区三区| 欧美日韩激情视频在线观看| 日韩精选在线| 国产精品爱久久久久久久| 91在线看片| 51精品国自产在线| 男女羞羞免费视频| 99久久精品情趣| 无码内射中文字幕岛国片| 日韩88av| 亚洲一区二区三区777| 毛片大全在线观看| 亚洲精品久久久久| 亚洲男人天堂网址| 国产精品初高中害羞小美女文| 天天做天天干天天操| 国产综合网站| 蜜桃视频日韩| 爱情电影网av一区二区| 欧美激情中文字幕乱码免费| 日韩偷拍自拍| 欧美精品v国产精品v日韩精品| 欧美成人免费观看视频| 91美女片黄在线观看| www.久久久精品| 欧美日韩ab| 欧美日韩一区二| 91精品国产一区二区在线观看| 欧美日韩福利电影| 欧洲亚洲在线| 日韩欧美一区二区在线视频| 日韩男人的天堂| 国产精品久久久久久亚洲伦| 性xxxxxxxxx| 日本欧美一区二区三区| 国产免费内射又粗又爽密桃视频| 欧美日韩直播| 91在线观看免费高清| 绿色成人影院| 精品国产拍在线观看| 亚洲欧美日韩成人在线| 欧美精品国产精品| 亚洲黄色免费观看| 玉米视频成人免费看| 精品无码国产污污污免费网站| 国产酒店精品激情| 久久午夜夜伦鲁鲁一区二区| 国内精品久久久久久久影视蜜臀| 日本精品一区二区三区高清 久久| 久久精品九色| 国产精品一区电影| 色资源二区在线视频| 久久成人精品一区二区三区| 四虎精品在永久在线观看 | 天堂av网在线| 日韩欧美中文字幕公布| 中国一级片黄色一级片黄| 亚洲成av人片在www色猫咪| 男人晚上看的视频| 国产视频一区不卡| 国产性生活毛片| 国产乱国产乱300精品| 不卡的在线视频| 国产老头老太做爰视频| 日本午夜精品视频在线观看| 国产不卡一区二区视频| 中文字幕一区二区av| 日韩在线第一区| 亚洲影院天堂中文av色| 国产视频一区二区不卡| 亚洲一区二区免费在线观看| 国产欧美日韩91| 韩国精品主播一区二区在线观看| 国内精品久久影院| 99在线播放| 久久久成人av| 五月天婷婷在线视频| 亚洲欧美日韩区| 天天色综合av| 亚洲第一视频网站| 丁香花免费高清完整在线播放| 欧美精品tushy高清| 亚洲资源在线播放| 欧美日韩在线直播| 中文字幕乱码在线观看| 欧美在线free| 在线观看亚洲一区二区| 欧美日韩一区二区三区四区| 中文字幕一区二区人妻痴汉电车| 色8久久人人97超碰香蕉987| 亚洲视频 欧美视频| 日本高清视频一区二区| 中文字幕av无码一区二区三区| 在线观看免费成人| 中文字幕免费播放| 在线成人小视频| 国产色视频在线| 日韩欧美三级在线| 亚洲国产成人精品一区二区三区| 日韩精品最新网址| 高h调教冰块play男男双性文| 亚洲成人av在线播放| 无码国产伦一区二区三区视频| 日韩av有码在线| 激情小视频在线| 中文字幕最新精品| caoporm免费视频在线| 欧美激情视频一区| 女人让男人操自己视频在线观看 | 日韩成人免费在线视频| 欧美日韩精品在线| 极品国产91在线网站| 欧美三级中文字幕| 国产情侣在线播放| 亚洲高清久久网| 免费成人av电影| 久久精品电影网站| heyzo一区| 日韩免费精品视频| 国产精品99久久免费| 成人永久免费| 国产一区日韩| 亚洲五码在线观看视频| 国产精品人人爽人人做我的可爱| 国内外免费激情视频| 国产麻豆日韩欧美久久| 亚洲av片不卡无码久久| 国产精品美女久久久久av爽李琼| 午夜精品一区二区三区视频| 亚洲成人免费电影| 中文永久免费观看| 精品日韩在线观看| 国产大学生校花援交在线播放| 久久精品国产久精国产一老狼| av岛国在线| 成人xxxxx| 偷拍精品福利视频导航| 亚洲制服中文| 国产亚洲毛片| 不卡的在线视频| 久久综合色婷婷| 亚洲一级生活片| 色一区在线观看| www.国产.com| 中文字幕精品www乱入免费视频| 免费在线看污片| 国产美女精品视频免费观看| 超碰cao国产精品一区二区| 水蜜桃亚洲精品| 国产精品丝袜xxxxxxx| 国产传媒免费观看| 欧美国产日本视频| 国产成人亚洲精品自产在线| 91麻豆精品国产91久久久使用方法| 天天综合在线视频| 九九热精品视频在线播放| 播放一区二区| 激情五月综合色婷婷一区二区| 天天综合网91| 91激情视频在线| 99久久久免费精品国产一区二区| 久久黄色免费视频| 欧美日韩国产美女| 丁香婷婷在线观看| 欧美亚洲视频在线观看| 年轻的保姆91精品| 伊人天天久久大香线蕉av色| 狂野欧美一区| theav精尽人亡av| 午夜精品久久久久久久| 亚洲美女福利视频| 精品中文字幕在线观看| 国产欧美88| 大地资源第二页在线观看高清版| 日韩av一区二区三区四区| 久久久久亚洲av无码专区桃色| 亚洲成av人综合在线观看| 亚洲av综合色区无码一二三区 | 五月天激情丁香| 欧美理论片在线| 免费网站免费进入在线| 国产欧美日韩精品在线观看| 国产伦一区二区三区| 国产v亚洲v天堂无码久久久| 久久免费看少妇高潮| 依依成人综合网| 亚洲人成伊人成综合网久久久| 日韩伦理在线| 欧美性色黄大片人与善| 亚洲欧美视频| 亚洲精品国产91| 欧美性大战久久| 午夜在线视频| 亚洲最大成人免费视频| 国模 一区 二区 三区| 91porn在线| 亚洲成人av电影在线| 少妇高潮久久久| 日本三级韩国三级久久| 国产最新精品| 国产一二三区av| 亚洲视频网在线直播| 午夜精品久久久久久久96蜜桃 | 456亚洲精品成人影院| 狼狼综合久久久久综合网| 久久激情一区| 午夜黄色福利视频| 欧美一区二区精品| 丁香花视频在线观看| 欧美精品二区三区四区免费看视频| 天堂成人国产精品一区| 日韩免费av一区| 日韩精品中文字幕一区二区三区 | 日本精品一二三区| 黑人巨大精品欧美一区免费视频 | 亚洲+变态+欧美+另类+精品| 麻豆传传媒久久久爱| 中文字幕一区二区三区蜜月| 精品乱子伦一区二区| 欧美怡红院视频一区二区三区 | 91视视频在线观看入口直接观看www| 亚洲永久精品在线观看| 日韩三级影视基地| 日本妇女一区| 欧美视频国产视频| 午夜影视日本亚洲欧洲精品| 福利在线观看| 国产精品初高中精品久久| 蘑菇福利视频一区播放| 夫妻性生活毛片| 日韩电影第一页| 亚洲欧美专区| 成人av一级片| 亚洲欧美成人一区二区三区| 天天干天天舔天天射| 成人春色激情网| 肉色丝袜一区二区| 日韩黄色精品视频| 精品国产一区二区三区久久久狼 | 精品国产麻豆| 任你操这里只有精品| 亚洲在线视频网站|