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

JavaScript之事件處理詳解

開發 前端
客戶端 JavaScript程序(就是瀏覽器啦)采用了異步事件驅動編程模型。當文檔、瀏覽器、元素或與之相關的對象發生某些有趣的事情時,Web瀏覽器就會產 生事件(event)。如果JavaScript應用程序關注特定類型的事件,那么它可以注冊當這類事件發生時要調用的一個或多個函數。

一.事件傳播機制

客戶端 JavaScript程序(就是瀏覽器啦)采用了異步事件驅動編程模型。當文檔、瀏覽器、元素或與之相關的對象發生某些有趣的事情時,Web瀏覽器就會產 生事件(event)。如果JavaScript應用程序關注特定類型的事件,那么它可以注冊當這類事件發生時要調用的一個或多個函數。當然了,這種風格 并非Web編程獨有,所有使用圖形用戶界面的應用程序都采用了它。

既然要詳解事件處理,那我們先從幾個基礎概念說起吧:

 ?、偈录愋停╡vent type):是一個用來說明發生什么類型事件的字符串。例如,“mousemove”表示用戶移動鼠標,“keydown”表示鍵盤上某個鍵被按下。事件類型只是一個字符串,有時候又稱之為事件名字(event name);

 ?、谑录繕耍╡vent target):是發生事件或與之相關的對象。Window、Document和Element對象是最常見的事件目標。當然,AJAX中的XMLHttpRequest對象也是一個事件目標;

 ?、凼录幚沓绦颍╡vent handler):是處理或響應事件的函數,它也叫事件監聽程序(event listener)。應用程序通過指明事件類型和事件目標,在Web瀏覽器中注冊它們的事件處理函數。

 ?、苁?件對象(event object):是與特定事件相關且包含有關該事件詳細信息的對象。事件對象作為參數傳遞給事件處理函數(但是在IE8以及其之前版本中,全局變量 event才是事件對象)。事件對象都有用來指定事件類型(event type)的type屬性和指定事件目標(event target)的target屬性(但是在IE8以及其之前版本中,用的是srcElement而非target)。當然,不同類型的事件還會為其相關事 件對象定義一些其他的獨有屬性。例如,鼠標事件的相關對象會包含鼠標指針的坐標,而鍵盤事件的相關對象會包含按下的鍵和輔助鍵的詳細信息。

以上說完 了四個基本概念。那么問題來了——如果在一個web頁面上用鼠標點擊一個元素a的某一子元素b時,應該先執行子元素b注冊的事件處理程序還是先執行元素a 注冊的事件處理程序呢(假設元素a和它的子元素b都有注冊事件處理程序)?身為讀者的你是否想過這個問題呢?

這個問題就涉及到瀏覽器中的事件傳播(event propagation)機制。相信大家都聽說過事件冒泡(event bubble)和事件捕獲(event capturing)吧!沒錯,它們就是瀏覽器中的事件傳播機制。無圖無真相,沒有配圖?那怎么闊以:

看了圖之 后相信你已經大概理解了瀏覽器中的事件傳播機制了:當一個事件發生時,它會先從瀏覽器***對象Window一路向下傳遞,一直傳遞到觸發這個事件的那個元 素,這也就是事件捕獲過程。然而,一切并沒有結束,事件又從這個元素一路向上傳遞到Window對象,這也就是事件冒泡過程(但是在IE8以及其之前版本 中,事件模型并未定義捕獲過程,只有冒泡過程)。

所以,關于上面的問題,還得看元素a注冊的事件處理程序是在捕獲過程還是在冒泡過程了。那么到底什么是在捕獲過程注冊事件處理程序,在冒泡過程注冊事件處理程序又是怎么做的呢?這就得好好說說幾種注冊事件處理程序的方式了:

1. 設置HTML標簽屬性為事件處理程序

文檔元素的事件處理程序屬性,其名字由“on”后面跟著事件名組成,例如:onclick、onmouseover。當然了,這種形式只能為DOM元素注冊事件處理程序。實例:

 

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  5.     <title>test</title> 
  6.     <style type="text/css"
  7.         #div1{width: 300px; height: 300px; background: red; overflow:hidden;} 
  8.         #div2{margin:50px auto; width: 200px; height: 200px; background: green; overflow:hidden;} 
  9.         #div3{margin:50px auto; width: 100px; height: 100px; background: blue;} 
  10.     </style> 
  11. </head> 
  12. <body> 
  13.     <div id="div1" onClick="console.log('div1');">div1 
  14.         <div id="div2" oNClick="console.log('div2');">div2 
  15.             <div id="div3" onclick="console.log('div3');" onclick="console.log('div3333');">div3 
  16.             </div> 
  17.         </div> 
  18.      </div> 
  19. <script type="text/javascript"
  20. </script> 
  21. </body> 
  22. </html> 

 

結果(鼠標點擊div3區域后):

從結果中可以看出:

①因為HTML里面不區分大小寫,所以這里事件處理程序屬性名大寫、小寫、大小混寫均可,屬性值就是相應事件處理程序的JavaScript代碼;

②若給同一元素寫多個onclick事件處理屬性,瀏覽器只執行***個onclick里面的代碼,后面的會被忽略;

③這種形式是在事件冒泡過程中注冊事件處理程序的;

2.設置JavaScript對象屬性為事件處理程序

可以通過設置某一事件目標的事件處理程序屬性來為其注冊相應的事件處理程序。事件處理程序屬性名字由“on”后面跟著事件名組成,例如:onclick、onmouseover。實例:

 

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  5.     <title>test</title> 
  6.     <style type="text/css"
  7.         #div1{width: 300px; height: 300px; background: red; overflow:hidden;} 
  8.         #div2{margin:50px auto; width: 200px; height: 200px; background: green; overflow:hidden;} 
  9.         #div3{margin:50px auto; width: 100px; height: 100px; background: blue;} 
  10.     </style> 
  11. </head> 
  12. <body> 
  13.     <div id="div1">div1 
  14.         <div id="div2">div2 
  15.             <div id="div3">div3 
  16.             </div> 
  17.         </div> 
  18.     </div> 
  19. <script type="text/javascript"
  20.     var div1 = document.getElementById('div1'); 
  21.     var div2 = document.getElementById('div2'); 
  22.     var div3 = document.getElementById('div3'); 
  23. div1.onclick = function(){ 
  24. console.log('div1'); 
  25. }; 
  26. div2.onclick = function(){ 
  27. console.log('div2'); 
  28. }; 
  29. div3.onclick = function(){ 
  30. console.log('div3'); 
  31. }; 
  32. div1.onclick = function(){ 
  33. console.log('div11111'); 
  34. }; 
  35.  
  36.   div1.onClick = function(){ 
  37. console.log('DIV11111'); 
  38. }; 
  39.  
  40. </script> 
  41. </body> 
  42. </html> 

 

結果(鼠標點擊div3區域后):

 從結果中可以看出:

①因為JavaScript是嚴格區分大小寫的,所以,這種形式下屬性名只能按規定小寫;

②若給同一元素對象寫多個onclick事件處理屬性,后面寫的會覆蓋前面的(ps:這就是在修改一個對象屬性的值,屬性的值是***確定的);

③這種形式也是在事件冒泡過程中注冊事件處理程序的;

3.addEventListener()

前兩種方式出現在Web初期,眾多瀏覽器都有實現。而addEventListener()方法是標準事件模型中定義的。任何能成為事件目標的對象—— 這些對象包括Window對象、Document對象和所有文檔元素等——都定義了一個名叫addEventListener()的方法,使用這個方法可 以為事件目標注冊事件處理程序。addEventListener()接受三個參數:***個參數是要注冊處理程序的事件類型,其值是字符串,但并不包括前 綴“on”;第二個參數是指當指定類型的事件發生時應該調用的函數;第三個參數是布爾值,其可以忽略(某些舊的瀏覽器上不能忽略這個參數),默認值為 false。這種情況是在事件冒泡過程中注冊事件處理程序。當其為true時,就是在事件捕獲過程中注冊事件處理程序。實例:

 

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  5. <title>test</title> 
  6. <style type="text/css"
  7. #div1{width: 300px; height: 300px; background: red; overflow:hidden;} 
  8. #div2{margin:50px auto; width: 200px; height: 200px; background: green; overflow:hidden;} 
  9. #div3{margin:50px auto; width: 100px; height: 100px; background: blue;} 
  10. </style> 
  11. </head> 
  12. <body> 
  13. <div id="div1">div1 
  14. <div id="div2">div2 
  15. <div id="div3">div3 
  16. </div> 
  17. </div> 
  18. </div> 
  19. <script type="text/javascript"
  20. var div1 = document.getElementById('div1'); 
  21. var div2 = document.getElementById('div2'); 
  22. var div3 = document.getElementById('div3'); 
  23. div1.addEventListener('click', function(){ console.log('div1-bubble'); }, false); 
  24. div2.addEventListener('click', function(){ console.log('div2-bubble'); }, false); 
  25. div3.addEventListener('click', function(){ console.log('div3-bubble'); }, false); 
  26. div3.addEventListener('click', function(){ console.log('div3-bubble222'); }, false); 
  27. div1.addEventListener('click', function(){ console.log('div1-capturing'); }, true); 
  28. div2.addEventListener('click', function(){ console.log('div2-capturing'); }, true); 
  29. div3.addEventListener('click', function(){ console.log('div3-capturing'); }, true); 
  30. </script> 
  31. </body> 
  32. </html>

結果(鼠標點擊div3區域后):

從結果中可以看出:

①addEventListener()第三個參數的作用正如上面所說;

②通過addEventListener()方法給同一對象注冊多個同類型的事件,并不會發生忽略或覆蓋,而是會按順序依次執行;

相對addEventListener()的是removeEventListener()方法,它同樣有三個參數,前兩個參數自然跟 addEventListener()的意義一樣,而第三個參數也只需跟相應的addEventListener()的第三個參數保持一致即可,同樣可以 省略,默認值為false。它表示從對象中刪除某個事件處理函數。實例:

  1. div1.addEventListener('click', div1BubbleFun, false); 
  2. div1.removeEventListener('click', div1BubbleFun, false); 
  3. function div1BubbleFun(){ 
  4.     console.log('div1-bubble'); 

4.attachEvent()

   但是,IE8以及其之前版本的瀏覽器并不支持addEventListener()和removeEventListener()。相應的,IE定義了 類似的方法attachEvent()和detachEvent()。因為IE8以及其之前版本瀏覽器也不支持事件捕獲,所以attachEvent() 并不能注冊捕獲過程中的事件處理函數,因此attachEvent()和detachEvent()要求只有兩個參數:事件類型和事件處理函數。而且,它 們的***個參數使用了帶“on”前綴的事件處理程序屬性名。實例:

 

  1. var div1 = document.getElementById('div1'); 
  2. div1.attachEvent('onclick', div1BubbleFun); 
  3. function div1BubbleFun(){ 
  4. console.log('div1-bubble'); 

 

相應的,從對象上刪除事件處理程序函數使用detachEvent()。例如:

div1.detachEvent('onclick', div1BubbleFun);

到此為止,我們已經說了瀏覽器中事件傳播機制以及各種注冊事件處理程序的方法。下面我們就再說說事件處理程序調用時的一些問題吧!

#p#

二.事件處理程序的調用

1.事件處理程序的參數:正 如前面所說,通常事件對象作為參數傳遞給事件處理函數,但IE8以及其之前版本的瀏覽器中全局變量event才是事件對象。所以,我們在寫相關代碼時應該 注意兼容性問題。實例(給頁面上id為div1的元素添加點擊事件,當點擊該元素時在控制臺輸出事件類型和被點擊元素本身):

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  5.     <title>test</title> 
  6.     <style type="text/css"
  7.         #div1{width: 300px; height: 300px; background: red; overflow: hidden;} 
  8.     </style> </head> <body> <div id="div1">div1</div> <script type="text/javascript"> var div1 = document.getElementById('div1'); if(div1.addEventListener){ div1.addEventListener('click', div1Fun, false); }else if(div1.attachEvent){ div1.attachEvent('onclick', div1Fun); } function div1Fun(event){ event = event || window.event; var target = event.target || event.srcElement; 
  9.             console.log(event.type); 
  10.             console.log(target); 
  11.         } 
  12.     </script> 
  13. </body> 
  14. </html> 

2.事件處理程序的運行環境:關于事件處理程序的運行環境,也就是在事件處理程序中調用上下文(this值)的指向問題,可以看下面四個實例。
實例一:

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  5.     <title>test</title> 
  6.     <style type="text/css"
  7.         #div1{width: 300px; height: 300px; background: red; overflow: hidden;} 
  8.     </style> 
  9. </head> 
  10. <body> 
  11.     <div id="div1" onclick="console.log('html:'); console.log(this);">div1</div> 
  12.     <script type="text/javascript"
  13.     </script> 
  14. </body> 
  15. </html>

結果一:

從結果可以看出:

  ①***種方法事件處理程序中this指向這個元素本身;

實例二:

 

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  5.     <title>test</title> 
  6.     <style type="text/css"
  7.         #div1{width: 300px; height: 300px; background: red; overflow: hidden;} 
  8.     </style> </head> <body> <div id="div1" onclick="console.log('html:'); console.log(this);">div1</div> <script type="text/javascript"> var div1 = document.getElementById('div1'); div1.onclick = function(){ console.log('div1.onclick:'); console.log(this); 
  9.         }; 
  10.     </script> 
  11. </body> 
  12. </html> 

 

結果二:

從結果可以看出:

  ①第二種方法事件處理程序中this也指向這個元素本身;

 ?、诖嬖诘诙N方法時,它會覆蓋***種方法注冊的事件處理程序;

實例三:

 

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  5.     <title>test</title> 
  6.     <style type="text/css"
  7.         #div1{width: 300px; height: 300px; background: red; overflow: hidden;} 
  8.     </style> </head> <body> <div id="div1" onclick="console.log('html:'); console.log(this);">div1</div> <script type="text/javascript"> var div1 = document.getElementById('div1'); div1.onclick = function(){ console.log('div1.onclick:'); console.log(this); }; div1.addEventListener('click', function(){ console.log('div1.addEventListener:'); console.log(this); }, false); 
  9.     </script> 
  10. </body> 
  11. </html> 

 

結果三:

從結果可以看出:

 ?、俚谌N方法事件處理程序中this也指向這個元素本身;

 ?、诘谌N方法并不會覆蓋***種或第二種方法注冊的事件處理程序;

實例四:

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  5.     <title>test</title> 
  6.     <style type="text/css"
  7.         #div1{width: 300px; height: 300px; background: red; overflow: hidden;} 
  8.     </style> </head> <body> <div id="div1" onclick="console.log('html:'); console.log(this);">div1</div> <script type="text/javascript"> var div1 = document.getElementById('div1'); div1.onclick = function(){ console.log('div1.onclick:'); console.log(this); }; div1.attachEvent('onclick', function(){ console.log('div1.attachEvent:'); console.log(this === window); 
  9.         }); 
  10.         
  11.     </script> 
  12. </body> 
  13. </html>

 

結果四:

從結果可以看出:

 ?、俚谒姆N方法事件處理程序中this指向全局對象Window;

 ?、诘谒姆N方法也不會覆蓋***種或第二種方法注冊的事件處理程序;

3.事件處理程序的調用順序:多個事件處理程序調用規則如下:

 ?、偻ㄟ^HTML屬性注冊的處理程序和通過設置對象屬性的處理程序一直優先調用;

②使用addEventListener()注冊的處理程序按照它們的注冊順序依次調用;

③使用attachEvent()注冊的處理程序可能按照任何順序調用,所以代碼不應該依賴于調用順序;

4.事件取消:

①取消事 件的瀏覽器默認操作(比如點擊超鏈接元素會自動發生頁面跳轉的默認操作):如果使用前兩種方法注冊事件處理程序,可以在處理程序中添加返回值false來 取消事件的瀏覽器默認操作。在支持addEventListener()的瀏覽器中,也可以通過調用事件對象的preventDefault()方法取消 事件的默認操作。至于IE8及其之前的瀏覽器可以通過設置事件對象的returnValue屬性為false來取消事件的默認操作。參考代碼:

 

  1. function cancelHandler(event){ 
  2.     var event = event || window.event; 
  3.     if(event.preventDefault){ 
  4.         event.preventDefault(); 
  5.     } 
  6.     if(event.returnValue){ 
  7.         event.returnValue = false
  8.     } 
  9.     return false

 

②取消事 件傳播:在支持addEventListener()的瀏覽器中,可以調用事件對象的一個stopPropagation()方法阻止事件的繼續傳播,它 能工作在事件傳播期間的任何階段(捕獲期階段、事件目標本身、冒泡階段);但是在IE8以及其之前版本的瀏覽器中并不支持 stopPropagation()方法,而且這些瀏覽器也不支持事件傳播的捕獲階段,相應的,IE事件對象有一個cancelBubble屬性,設置這 個屬性為true能阻止事件進一步傳播(即阻止其冒泡)。參考代碼(阻止發生在div3區域的點擊事件冒泡到div2和div1):

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  5.     <title>test</title> 
  6.     <style type="text/css"
  7.         #div1{width: 300px; height: 300px; background: red; overflow:hidden;} 
  8.         #div2{margin:50px auto; width: 200px; height: 200px; background: green; overflow:hidden;} 
  9.         #div3{margin:50px auto; width: 100px; height: 100px; background: blue;} 
  10.     </style> </head> <body> <div id="div1">div1 <div id="div2">div2 <div id="div3">div3 </div> </div> </div> <script type="text/javascript"> var div1 = document.getElementById('div1'); var div2 = document.getElementById('div2'); var div3 = document.getElementById('div3');    div1.onclick = function(){ console.log('div1');    };    div2.onclick = function(){ console.log('div2');    };    div3.onclick = function(event){ stopEventPropagation(event); console.log('div3');    }; function stopEventPropagation(event){ var event = event || window.event; if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble = true
  11.             } 
  12.         } 
  13.     </script> 
  14. </body> 
  15. </html>

當然,關于事件冒泡還是有可利用之處的,這也就是我們常說的事件代理或者事件委托,我之前曾寫過一篇文章介紹相關內容,詳情請看:http://www.cnblogs.com/craftsman-gao/p/4811845.html 。

下面是在下衷心送給各位看官的五個歡迎(O(∩_∩)O~):歡迎轉載、歡迎收藏、歡迎評論、歡迎點贊、歡迎推薦!

責任編輯:王雪燕 來源: 博客園
相關推薦

2011-08-11 13:53:45

JavaScript

2011-08-02 17:58:09

iPhone開發 事件

2009-08-06 13:08:23

ASP.NET控件開發

2011-08-01 14:26:41

iPhone 應用程序 事件

2017-06-12 10:31:17

Redis源碼學習事件驅動

2011-04-25 09:22:44

C#事件

2009-08-14 18:00:22

C#Windows應用

2009-10-20 14:58:15

Javascript事

2010-09-16 09:37:21

JavaScript事

2011-04-26 08:56:31

C#

2017-01-11 18:44:43

React Nativ觸摸事件Android

2021-08-16 07:26:42

服務訂閱機制

2010-01-05 10:29:43

.NET Framew

2011-04-27 15:55:16

2020-12-23 07:37:17

瀏覽器HTML DOM0

2011-07-04 14:50:49

QT Event 事件

2011-08-29 14:59:26

QtEvent事件

2009-08-10 15:26:46

ASP.NET組件編程

2011-06-16 14:23:43

JavaScript空事件處理程序

2022-06-22 05:42:32

數據庫事務處理分析查詢
點贊
收藏

51CTO技術棧公眾號

99精品电影| 国产福利亚洲| 久久久久久久久久久久久久久99 | 国产黄在线免费观看| 亚洲一区二区三区中文字幕在线观看| 午夜精品福利一区二区三区av| 蜜桃精品久久久久久久免费影院| 中文字幕av在线免费观看| 亚洲精品网址| 亚洲免费av片| 香蕉视频色在线观看| 免费看男女www网站入口在线| 国产欧美一区二区精品性色超碰| 亚洲一区中文字幕在线观看| 人妻丰满熟妇av无码区| 亚洲一区二区| 一区二区在线免费视频| 少妇一级淫片免费放播放| 日本h片久久| 午夜欧美2019年伦理 | 在线欧美一区| 日韩在线不卡视频| 黄瓜视频污在线观看| 国产精品日韩精品在线播放| 色婷婷综合久久久久中文| 欧美视频在线第一页| seseavlu视频在线| 91一区一区三区| 99re视频在线观看| 国产老女人乱淫免费| 日韩电影在线一区二区| 国语自产偷拍精品视频偷| 国产精品视频一区二区三 | 国产午夜精品视频免费不卡69堂| 国产a级片视频| 国产精品美女久久久久人| 欧美特级限制片免费在线观看| 久在线观看视频| wwww亚洲| 一区二区三区蜜桃网| 自拍偷拍99| 免费观看成人高潮| 国产精品乱码一区二区三区软件| 日本午夜精品一区二区| 欧美色18zzzzxxxxx| 99精品久久免费看蜜臀剧情介绍 | 亚洲小说图片| 日韩精品中文在线观看| 在线天堂www在线国语对白| a级日韩大片| 精品国产一区二区在线观看| 苍井空张开腿实干12次| 欧美影院视频| 日韩精品在线一区| 免费国偷自产拍精品视频| 91麻豆精品| 日韩一区二区在线免费观看| 超碰中文字幕在线观看| 视频精品二区| 精品福利二区三区| av免费观看不卡| 精品欧美午夜寂寞影院| 精品呦交小u女在线| 性欧美丰满熟妇xxxx性仙踪林| 岳的好大精品一区二区三区| 亚洲欧美视频在线| 少妇一级黄色片| 99久久精品网站| 久久国产天堂福利天堂| 玖玖爱免费视频| 宅男噜噜噜66一区二区| 91精品国产乱码久久久久久久久 | 欧美日韩国产经典色站一区二区三区| 中文字幕av不卡在线| 色999韩欧美国产综合俺来也| 7777女厕盗摄久久久| 日本黄色www| 欧洲在线一区| 国产一区二区动漫| 搜索黄色一级片| 影院欧美亚洲| 国产成人精品日本亚洲| 国产三级第一页| 粉嫩欧美一区二区三区高清影视 | 香蕉视频免费看| 久久久久久一二三区| 亚洲一区高清| 成人影院在线播放| 欧美日韩在线免费视频| 曰本三级日本三级日本三级| 亚洲免费毛片| 久久中文字幕国产| 麻豆久久久久久久久久| 美女脱光内衣内裤视频久久网站| 97人人模人人爽人人少妇| 日韩成人黄色| 亚洲色图制服诱惑| 日韩av资源在线| 国产一区二区高清在线| 精品亚洲永久免费精品| 爱爱视频免费在线观看| 香蕉亚洲视频| 亚洲最大成人免费视频| 欧美老女人性开放| 亚洲一区二区三区在线| 国产又大又黄又粗的视频| 91综合精品国产丝袜长腿久久| 国产一区二区三区视频在线观看 | 一本大道av伊人久久综合| 五月激情五月婷婷| 在线日本制服中文欧美| 欧美日韩ab片| 夜夜狠狠擅视频| 91丨porny丨首页| 一级黄色片播放| 成人软件在线观看| 亚洲高清久久久久久| 综合五月激情网| 蜜臀av性久久久久蜜臀av麻豆| 精品国产乱码久久久久久郑州公司 | 亚洲区成人777777精品| 91国拍精品国产粉嫩亚洲一区| 精品国产精品网麻豆系列| 99成人在线观看| 日韩精品电影一区亚洲| 久久99久久99精品蜜柚传媒| 97影院秋霞午夜在线观看| 欧美色视频在线| 无码熟妇人妻av| 国产欧美大片| 国产精品自拍首页| 性欧美ⅴideo另类hd| 欧美挠脚心视频网站| 三区四区在线观看| 久久天堂精品| 乱色588欧美| 欲香欲色天天天综合和网| 亚洲成人1234| 久久久久99精品| 国产精品 欧美精品| www.午夜色| 色8久久久久| 丝袜美腿亚洲一区二区| 中文字幕久久久久| 中文字幕精品三区| 欧美黄色性生活| 成人系列视频| 国产专区精品视频| 浪潮av一区| 日韩亚洲欧美一区| 激情视频在线播放| 成人午夜短视频| 成人在线播放网址| 欧美影院天天5g天天爽| 2018国产精品视频| 免费a在线观看| 欧美在线观看你懂的| 欧日韩不卡视频| 国产精品资源站在线| 欧美 日韩 国产精品| 国产成人精品福利| …久久精品99久久香蕉国产| 国产裸舞福利在线视频合集| 欧美性色综合网| 午夜激情福利电影| 国产成人综合视频| 国产综合av在线| 成人aaaa| 亚洲综合在线小说| 色是在线视频| 中文字幕日韩在线播放| 国产三级在线观看视频| 亚洲国产视频一区二区| a级在线观看视频| 欧美aaaaa成人免费观看视频| 这里只有精品66| av不卡一区二区| 日韩免费视频在线观看| 麻豆视频免费在线观看| 亚洲成人激情视频| 日本a级c片免费看三区| 亚洲欧洲精品一区二区三区不卡| 人妻精品久久久久中文字幕69| 亚洲人体大胆视频| 日韩欧美第二区在线观看| 国产精品亚洲四区在线观看| 午夜欧美大片免费观看| 大乳在线免费观看| 日韩欧美国产综合一区| 成人公开免费视频| 亚洲欧美日韩一区二区三区在线观看 | 亚洲高清视频一区| 91精品入口| 国产精品国内视频| 欧洲中文在线| 中文字幕欧美日韩| 五月天激情婷婷| 在线成人小视频| 五月婷婷激情网| 亚洲色图清纯唯美| 欧美做受xxxxxⅹ性视频| 国产精品1024| 男女男精品视频站| 国产日韩综合| 黄色网络在线观看| 精品国产一区二区三区av片| 国产福利不卡| 欧美亚洲二区| 青草青草久热精品视频在线网站 | 久久国产精品高清一区二区三区| 91麻豆精品久久久久蜜臀 | www.超碰在线| 久久久91精品| 免费成人av电影| 亚洲国产精品久久久| 99在线小视频| 欧美日韩视频专区在线播放| 日韩成人在线免费视频| 亚洲精品成人a在线观看| 国产又粗又猛又爽又黄的视频四季 | 欧美fxxxxxx另类| 日韩三级在线播放| 四虎影视精品| 国产欧美日韩一区| 欧美久久亚洲| 成人免费视频网址| 91另类视频| 国产精品精品久久久久久| 国产高清不卡| 清纯唯美亚洲综合| 麻豆视频在线观看免费网站黄| 欧美大片在线免费观看| av在线免费播放| 久久综合五月天| 黄视频在线观看网站| 日韩在线视频中文字幕| 国产毛片av在线| 亚洲人成在线播放| 日本护士...精品国| 日韩成人在线视频| 五月婷婷久久久| 日韩精品极品在线观看| 亚洲三区在线观看无套内射| 亚洲激情第一页| 少妇精品高潮欲妇又嫩中文字幕| 精品捆绑美女sm三区| 高清毛片aaaaaaaaa片| 欧美精品一区二区三区视频| 国产综合视频在线| 亚洲国产成人精品女人久久久| 黑人操亚洲女人| 亚洲国产精品中文| 亚洲三区在线播放| 亚洲色图五月天| aaa在线观看| 日韩中文字幕免费| 菠萝蜜视频国产在线播放| 久久69精品久久久久久久电影好 | 国产精品视频精品视频| 69堂免费精品视频在线播放| 国产欧美一区二区三区久久人妖| 久久99久久久精品欧美| 91精品久久久久久久久青青| 国产午夜久久av| 国产精品免费一区二区三区四区| 噜噜噜天天躁狠狠躁夜夜精品| 久久久99爱| 成人黄色小视频| 自拍亚洲欧美老师丝袜| 韩国在线一区| 国产淫片免费看| 美腿丝袜亚洲色图| 国产伦精品一区二区三区妓女下载 | 91精品久久久久久久久久另类 | 青草影院在线观看| 亚洲高清免费在线| 男人天堂视频在线| 这里只有精品视频在线观看| 黄色一级大片在线免费看国产一 | 久久aⅴ乱码一区二区三区| 天天爱天天操天天干| 国产一区二三区| 国产网站无遮挡| 中文字幕在线一区| 黄色激情视频在线观看| 欧美中文字幕亚洲一区二区va在线| 97精品人妻一区二区三区香蕉| 欧美www视频| 国产色在线 com| 欧美黄色成人网| 亚洲承认视频| 国产精华一区二区三区| 欧美亚洲国产精品久久| 欧美这里只有精品| 免费成人在线观看视频| 深田咏美中文字幕| 国产精品久久久久精k8| 国产情侣在线视频| 欧美精品在线一区二区三区| 色综合888| 欧美男插女视频| 日本一区免费网站| 国产日韩精品久久| 国产精品黑丝在线播放| 日日摸日日碰夜夜爽无码| 九九**精品视频免费播放| 熟女人妻在线视频| 一区二区三区四区蜜桃| 特级西西444www大胆免费看| 亚洲国产精品999| √天堂8在线网| 成人精品久久久| 香蕉久久夜色精品国产更新时间| 成人在线免费高清视频| 麻豆视频观看网址久久| 人人妻人人藻人人爽欧美一区| 亚洲图片一区二区| 国产精品久久久久久免费免熟| 亚洲人成人99网站| 都市激情亚洲一区| 精品国产乱码久久久久久郑州公司 | 成人在线免费观看网址| 日韩国产高清在线| 亚洲精品成人无码熟妇在线| 五月天久久比比资源色| 亚洲免费一级片| 欧美成年人在线观看| 色综合视频一区二区三区日韩 | 中文一区一区三区免费在线观看| jizz欧美激情18| 久久精品亚洲乱码伦伦中文| 国产微拍精品一区| 亚洲第一在线视频| 丰满诱人av在线播放| 99在线观看视频网站| 欧美va天堂| 性猛交╳xxx乱大交| 亚洲国产aⅴ成人精品无吗| 国产成人精品毛片| 九九热精品在线| 日日夜夜精品视频| 黄色片免费在线观看视频| 国产精品456| 久久久久久久久久久网| 欧美va亚洲va香蕉在线 | 国产成人综合亚洲| 国产一区日韩| youjizzxxxx18| 国产精品免费人成网站| 91精品国产乱码久久| 日韩网站免费观看高清| 9999精品视频| 大桥未久一区二区三区| 国产精品综合一区二区| 久久国产精品波多野结衣av| 欧美精品一区二区三区在线播放| 国产精品论坛| 久久艳妇乳肉豪妇荡乳av| 久久久999| av在线免费播放网址| 在线综合+亚洲+欧美中文字幕| 尤物在线网址| 精品国产一区二区三区麻豆免费观看完整版 | 中文字幕 日韩 欧美| 亚洲欧美日韩精品久久久久| 国产按摩一区二区三区| 高清欧美电影在线| 最新亚洲精品| 99日在线视频| 香蕉久久一区二区不卡无毒影院| 视频二区在线| 国产精品中文久久久久久久| 午夜精品久久99蜜桃的功能介绍| 日韩aaaaa| 欧美日韩一区高清| 污视频在线看网站| 狼狼综合久久久久综合网| 免费高清在线一区| 免费一级特黄特色大片| 精品亚洲一区二区| 电影一区二区三区久久免费观看| 丁香六月激情婷婷| 欧美高清在线一区| 国内精品国产成人国产三级| 57pao国产精品一区| 久久国产精品成人免费观看的软件| 日本网站在线看| 精品国产精品三级精品av网址| av在线1区2区| 国产传媒一区| 精品在线观看免费| www.国产高清| 久久久久北条麻妃免费看| 日韩高清在线免费观看| 在线能看的av网站| 欧美丝袜美女中出在线| 成人福利在线观看视频| 欧美下载看逼逼| 成人综合婷婷国产精品久久蜜臀 | 亚洲最新无码中文字幕久久|