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

經典推送:針對jQuery升級踩坑大全

開發 前端
前段時間我就主導了這件事情,把公司里我們組負責的項目jQuery版本從1.4.2升級到了jQuery 1.11.3。jQuery官方也為類似升級工作提供了jQuery Migrate插件。

背景


jQuery想必各個web工程師都再熟悉不過了,不過現如今很多網站還采用了很古老的jQuery版本。其實如果早期版本使用不當,可能會有 DOMXSS漏洞,非常建議升級到jQuery 1.9.x或以上版本。前段時間我就主導了這件事情,把公司里我們組負責的項目jQuery版本從1.4.2升級到了jQuery 1.11.3。jQuery官方也為類似升級工作提供了jQuery Migrate插件。

言歸正傳。

坑從何處來


jQuery 1.11.3是1.x時代的最后一個版本(作者更新:2016年1月8日,jQuery 1.12.0上線,jQuery 1.11.3不再是1.x時代最后一個版本了),由于我的部門項目已經有一定年頭了,當時還是采用的jQuery 1.4.2,這次升級步子邁得算是比較大。早期時候jQuery的很多寫法,在新版本中已經被廢棄,亦或者有些不規范的寫法,當時版本還能支持,但是現在 已經不支持。更糟糕的情況是,新版本還支持,但是功能已經和以前不一樣了……這種情況連個錯都不會報,需要深入到代碼邏輯里面去看。

jQuery官方推薦了jQuery Migrate 庫來解決jQuery升級問題。不過一直采用這個庫終究不是長久之計,開發中建議使用jQuery Migrate的開發版,可以在瀏覽器控制臺上打印出來不兼容的地方詳細信息。需要注意的是開發中一定要使用jQuery Migrate的開發版,因為壓縮版的是不會在控制臺給出警告的……把jQuery Migrate的庫緊跟在jQuery庫后面引用即可:

  1. <script src="<path>/<to>/jquery-1.11.3.js"></script> <script src="<path>/<to>/jquery-migrate-1.2.1.js"></script> 

等升級完畢,確定沒問題了之后,再將jQuery Migrate庫去掉就可以了。根據個人經驗,下面我把坑分成 常見坑少見坑兩類來論述。

常見坑


1. 使用了被廢棄的jQuery.fn.live方法

jQuery Migrate庫對此錯誤也在控制臺有相應的警告:

  1. JQMIGRATE: jQuery.fn.live() is deprecated 

live方法原本的作用是設置事件代理,該方法在jQuery 1.7之后就不推薦使用了,取代之的是jQuery.fn.on函數。他們的接口分別是:

  1. $(selector).live('click', function(){/* some code */}); 
  2. $(selector).on('click', [selector,] function(){/* some code */}); 

乍一看,中括號里面的參數可以省略掉,倆函數不是一模一樣么?于是天真地把函數名live直接替換成on,大部分時候,這么做好像沒有引起任何異常。但是如果在你調用on函數的時候,前面的$(selector)在當前的網頁上根本不匹配任何元素(該元素可能是后面的代碼才加到DOM里的),那是不會綁定成功的。事實上,live函數將$(selector)代理到了document元素上,這個元素是肯定存在的,所以不會出現類似情況。正確的替換方法應該是:

  1. $(selector).live('click', function(){/* some code */}); 替換為 
  2. $(document).on('click', selector, function(){/* some code */}); 

2. 使用了被廢棄的jQuery.fn.die方法

jQuery Migrate對此錯誤的警告是:

  1. JQMIGRATE: jQuery.fn.die() is deprecated 

這個方法和前面的live剛好反過來,取消事件處理函數的綁定。新版本中應該使用off函數代替之,替換方式類似。

3. 使用了被廢棄的jQuery.fn.toggle函數

jQuery Migrate對此錯誤的警告是:

  1. JQMIGRATE: jQuery.fn.toggle(handler, handler...) is deprecated 

早期jQuery中名字叫toggle的函數有兩個,一個是用于控制元素的顯示 和隱藏,這個用途的函數目前jQuery中依舊存在;另一個就是上面提到的被廢棄的toggle函數,它用于綁定至少兩個函數到同一個元素,點擊該元素的 時候兩個函數交替著執行。這兩個同名函數功能相差甚遠,為了不引起誤導,在jQuery 1.8中就不再建議使用了。替換的方式是把兩個函數合并成一個函數的if-else兩個區段,然后自己設置一個boolean變量,控制每次點擊時應該執 行哪個區段即可。

4. 使用了被廢棄的jQuery.browser屬性

jQuery Migrate對此錯誤的警告是

  1. JQMIGRATE: jQuery.browser is deprecated 

在前端開發中我們經常要根據不同的瀏覽器版本做出不同的處理,jQuery.browser本來是通過瀏覽器的userAgent字段來提取瀏覽器相關信息的。新版本中已經將其廢棄,而是建議使用特征檢測的方法去判斷,并且給了一個Modernizr庫作為推薦。不過,改成這個庫可能改動成本有點大,如果你還是想沿用jQuery.browser的思路的話,可以自己去實現一下它。例如,判斷是不是IE瀏覽器,可以用

  1. /msie/.test(navigator.userAgent.toLowerCase()); 

即自己手動獲取userAgent字段,并且做一個正則表達式匹配。其他瀏覽器思路類似,都是對navigator.userAgent做一個正則匹配。

5. $(html)格式書寫錯誤

在jQuery Migrate中,出現以下三種警告中的任何一種,都是屬于這個錯誤:

  1. JQMIGRATE: $(html) HTML strings must start with '<' character
  2. JQMIGRATE: $(html) HTML text after last tag is ignored
  3. JQMIGRATE: HTML string cannot start with a '#' character

這個錯誤還是蠻值得注意的,因為我們文章開頭所說的jQuery低版本有XSS漏洞,其實就是和這個錯誤有關系。在javascript中我們經常會直接將一段html格式的字符串寫在jQuery引用里面,比如$('<div></div>')。按照新版本的jQuery要求,這段html格式的字符串必須是以左尖括號(小于號)開頭,其他字符都不可以。以下幾種寫法,都是錯誤的:

1. $(" <div></div>"); //錯誤,字符串最開頭有一個空格,不是以小于號'<'開頭的 2. $("<div></div>test"); //不標準,html標簽結束后后面還有多余的"test",它會被忽略 3. $("#<div></div>); //錯誤,以井號開頭并且后面并不是一個css選擇器

這一點在書寫的時候注意一下就可以了,其實還是很容易避免的。其中第三種錯誤其實就不僅僅是警告了,jQuery會直接拋出一個錯誤,停止javascript代碼的繼續執行。一般情況以井號開頭,例如$("#test"),其實就是一個普通的選擇器,但是上面例子中后面又夾雜著html字符串,這會被jQuery判斷為潛在的XSS攻擊。

6. jQuery.fn.attr方法的錯誤使用(這是個非常易犯的錯誤!)

jQuery Migrate中,關于attr方法的警告有以下這些:

  1.  JQMIGRATE: jQuery.fn.attr('value', val) no longer sets properties
  2. JQMIGRATE: jQuery.fn.attr('value') no longer gets properties
  3. JQMIGRATE: jQuery.fn.attr('checked') may use property instead of attribute
  4. JQMIGRATE: jQuery.fn.attr( props, pass ) is deprecated

實踐中我發現,早期寫的代碼里面,獲取一個input輸入表單的值時,是怎么獲取的呢?$('input').attr('value');又是怎么設置的呢?$('input').attr('value', 'helloworld')。這在新版本中都是不正確的!正確的做法應該是

  1. $('input').val(); //獲取input表單現在所輸入的值 
  2. $('input').val('helloworld'); //設置input表單輸入的值 

到底是獲取還是設置,只取決于調用val方法時有沒有帶著參數。

如果你想手動設置單選框(例如<input type="radio" >)被選中,應該怎么設置呢?老的代碼里面可能會看到這樣 $('input').attr('checked', true)或者$('input').attr('checked', 'checked')。這些現在也都是不正確的!正確的做法應該是

$('input').prop('checked', true); //把單選框設為選中狀態
$('input').prop('checked'); //獲取單選框是不是被選中了,返回true或false

這是從jQuery 1.6版本開始使用的寫法。如果設置disabled和selected屬性,也是使用prop方法。那到底什么時候使用attr方法呢?兩者的區別 是:prop設置的是某元素固有的屬性,而attr設置的是寫在html標簽上的自定義屬性。舉個例子:

  1. <input type="checkbox" checked="checked" haha="hello" > 
  2. var v1 = $('input').prop("checked"); //返回true/false,是否被選中,隨狀態改變而改變 
  3. var v2 = $('input').attr("checked"); //返回"checked",這是你設置在標簽上的,不會變 
  4. var v3 = $('input').attr("haha"); //返回"hello",自定義屬性 
  5. var v4 = $('input').prop("haha"); //返回undefined,根本沒有這個固有屬性 

上面提到的第四個錯誤,jQuery.fn.attr(props, pass) is deprecated這個警告在真實項目中從未見到過,看了一下源碼,觸發該警告的jQuery寫法很少見,可忽略。

7. 向$.parseJSON傳入了非法的參數

在jQuery Migrate中,該錯誤產生如下警告

JQMIGRATE: jQuery.parseJSON requires a valid JSON string

jQuery之所以改這個接口,是為了和瀏覽器自帶的JSON.parse接口對齊,從jQuery 1.9開始生效。這個問題常見于AJAX接收服務端返回值的時候。服務端可能返回一個空字符串,這時候調用該接口會產生錯誤。必須向$.parseJSON傳入合法的JSON字符串。修正方法如下:

  1. var v1 = $.parseJSON(str); 替換為 
  2. var v1 = $.parseJSON( str ? str : "null" ); 

8. 使用了被廢棄的'hover'事件字符串

在jQuery Migrate中該錯誤產生如下警告

JQMIGRATE: 'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'

在注冊事件處理函數時,'hover'以前可以看作是'mouseenter mouseleave'兩個事件的別稱。目前已經將該別稱去掉了,所以代碼中請用'mouseenter mouseleave'替換之。

9. jQuery.fn.andSelf已經被替換,不能再使用

jQuery Migrate中是這樣的警告:

  1. JQMIGRATE: jQuery.fn.andSelf() replaced by jQuery.fn.addBack() 

兩個函數功能是完全一樣的,可以直接替換。

以上,就是在jQuery升級中常見的問題,當然,本著精益求精的精神,我們還是需要研究一下不常見的問題是什么樣子的。需要指出的是:下面的問題在我的實際項目中從來沒有碰到過,比較少見,但也無法保證一定不會出現在你的項目中,僅供感興趣的程序員們參考吧。

少見坑


1. jQuery不兼容瀏覽器的怪異模式

這個錯誤的觸發方式非常簡單,直接把html頁面最頂端的<!DOCTYPE html>標簽刪掉就可以了。瀏覽器怪異模式是為了兼容老古董網頁而設計的,詳情可參考這篇文章:鏈接。我想現在的WEB程序員應該不會傻到不寫DOCTYPE,也很少使用這種模式下的瀏覽器吧。

jQuery Migrate展示的錯誤警告如下:

2. AJAX全局事件必須綁定到document節點上

jQuery Migrate中的警告如下:

  1. JQMIGRATE: AJAX events should be attached to document: ajaxStart 

jQuery中AJAX全局事件包括如下接口ajaxStart, ajaxStop, ajaxSend, ajaxComplete, ajaxError, ajaxSuccess。因為這些事件使用的比較少,所以也歸在少見坑當中。從jQuery 1.9開始,這些事件只能綁定到$(document)上。改正方法如下(摘自jQuery官網):

  1. $("#status").ajaxStart(function(){ $(this).text("Ajax started"); }); 修改為 
  2. $(document).ajaxStart(function(){ $("#status").text("Ajax started"); }); 

3. IE6/7/8瀏覽器不支持修改input表單的type屬性

在jQuery Migrate中是這樣的警告:

JQMIGRATE: Can't change the 'type' of an input or button in IE 6/7/8

改變input的表單的type屬性,你可以直接把文本框改成單選框,改成多選框等等。雖然我感覺這是一種并不算優雅的行為,但是很多瀏覽器都是支持這么做的,除了IE6/7/8。建議在實際中也是少用這個功能為好。

4. 使用了被移除的$.clean, $.event.handle, $.attrFn, $.fn.data('events'), jQuery.event.trigger屬性與方法

在jQuery Migrate中是這樣的警告:

  1. JQMIGRATE: jQuery.clean() is deprecated
  2. JQMIGRATE: jQuery.event.handle is undocumented and deprecated
  3. JQMIGRATE: jQuery.attrFn is deprecated
  4. JQMIGRATE: Use of jQuery.fn.data('events') is deprecated
  5. JQMIGRATE: Global events are undocumented and deprecated

如果你在自己的代碼中使用過這五個接口,那確實是仔細研究過jQuery源代碼 的高人啊。因為這五個接口從來沒有出現在jQuery的官方文檔中,并且有些在后續版本中已經刪除,可謂來無影去無蹤。看源代碼的話在早期版本有機會找到 他們的存在,但是并不建議使用。建議采用其他方法實現相應的功能。什么?你不知道這五個函數是什么功能?那最好了,你現在也不需要知道了……

5. 使用了過時的$.sub()方法

jQuery Migrate中對本問題的警告如下:

  1. JQMIGRATE: jQuery.sub() is deprecated 

這個接口非常簡單,不接受任何參數。它用來創建一個jQuery的副本。該方法在jQuery 1.7版本開始就已經不再使用。

6. 使用了過時的jQuery.fn.error方法

jQuery Migrate中對本問題的警告如下:

  1. JQMIGRATE: jQuery.fn.error() is deprecated 

在jQuery中,error也是和click一樣的事件。注冊該事件的處理函數,以前是$(selector).error(function(){}),現在已經被廢棄,可以使用$(selector).on('error', function(){})來替代。

示例代碼


本文既然自稱為“XX大全”,那就應該盡量的全面一些。為了搞明白這些坑是怎么踩進去的,我們最后來寫一段js代碼,要求是用最少的代碼,把 jQuery Migration庫中所有的坑都踩一遍……也就是讓jQuery Migration庫打印出來它能打印的所有警告。最終的代碼如下所示(博客園竟然沒有辦法上傳附件,只能貼代碼了),非常簡單易懂。打開 index.html文件,然后再按F12鍵打開控制臺,你就可以看到壯觀宏偉的控制臺警告了^_^

  1. <!-- filename : index.html --> 
  2. <!--<!DOCTYPE html>--> //keng0 怪異模式 
  3. <html> 
  4.     <head> 
  5.         <meta charset="utf-8" /> 
  6.         <title>jQuery升級踩坑大全</title> 
  7.         <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js" ></script> 
  8.         <script type="text/javascript" src="http://code.jquery.com/jquery-migrate-1.2.1.js" ></script> 
  9.     </head> 
  10.     <body> 
  11.         <div class="test" id="a">a</div> 
  12.         <input type="radio" id="b" value="b" /> 
  13.         <input type="radio" id="c" value="c" /> 
  14.         <div id="d" value="d">test</div> 
  15.         <script type="text/javascript"> 
  16.             //開始踩坑 
  17.  
  18.             //使用被廢棄分$.attrFn方法 
  19.             var keng1 = $.attrFn || {}; 
  20.              
  21.             //該函數在jQuery內部調用,真實項目中從未見過,可忽略,這里只是為了觸發一下錯誤警告 
  22.             var keng2 = $.attr($("#a"), "class""xxx", true); 
  23.              
  24.             //IE6、7、8中不支持改變輸入框的類型 
  25.             var keng3 = $("input#b").attr("type", "text"); 
  26.              
  27.             //在該使用prop的地方使用了attr 
  28.             var keng4 = $("input#c").attr("checked", true); 
  29.              
  30.             //使用attr獲取property的值,正確的是應該使用 .val() 
  31.             var keng5 = $("div#d").attr("value"); 
  32.              
  33.             //使用attr設置property的值,正確的是應該使用 .val('somevalue') 
  34.             var keng6 = $("div#d").attr("value", "abcd"); 
  35.              
  36.             //html字符串必須以'<'開頭(下面這個是以空格開頭) 
  37.             var keng7 = $(" <div></div>"); 
  38.              
  39.             //最后一個tag后面還有多余字符串 
  40.             var keng8 = $("<div></div>abc"); 
  41.  
  42.             //html字符串不可以以井號‘#’開頭 
  43.             try{ 
  44.                 var keng9 = $("#<div></div>"); 
  45.             }catch(e){ 
  46.                 console.error(e); 
  47.             } 
  48.          
  49.             //$.parseJSON的參數必須是合法的JSON字符串 
  50.             var keng10 = $.parseJSON(undefined); 
  51.              
  52.             //使用被廢棄的$.browser 
  53.             var keng11 = $.browser; 
  54.              
  55.             //使用被廢棄的$.sub 
  56.             var keng12 = $.sub(); 
  57.              
  58.             $("#c").on("click", function(){}); 
  59.             var keng13 = $("#c").data("events"); 
  60.              
  61.             //調用了已經不再使用的函數andSelf,該函數已經被addBack替代 
  62.             var keng14 = $("#c").nextAll().andSelf(); 
  63.  
  64.             //使用被廢棄的$.clean方法 
  65.             try{ 
  66.                 var keng15 = $.clean(); 
  67.             }catch(e){ 
  68.                 console.error(e); 
  69.             } 
  70.              
  71.             //"hover"字符串注冊事件已經被拆成"mouseenter"和"mouseleave"兩個 
  72.             var keng16 = $("#d").on("hover", function(){/*some code*/}); 
  73.              
  74.             //jQuery.event.handle并沒有收錄到官方的API中,新版本已經被移除 
  75.             var keng17 = function(){ 
  76.                 $.event.handle.apply(this, arguments); 
  77.             }; 
  78.              
  79.             //全局AJAX事件處理必須綁定到document對象上 
  80.             var keng18 = $("#c").ajaxStart(function(){}); 
  81.              
  82.             //使用了被廢棄的error方法 
  83.             var keng19 = $("#c").error(function(){}); 
  84.  
  85.             //使用了被廢棄的toggle方法 
  86.             var keng20 = $("#d").toggle(function(){/*some code*/}, function(){/*some code*/}); 
  87.  
  88.             //使用了被廢棄的live方法,應該使用on方法替代之 
  89.             var keng21 = $("#a").live("click", function(){/*some code*/}); 
  90.  
  91.             //使用了被廢棄的die方法,應該使用off方法替代之 
  92.             var keng22 = $("#a").die("click"); 
  93.  
  94.             //使用了全局事件函數,目前全局事件只支持AJAX那幾個,其他全局事件都不支持 
  95.             var keng23 = $.event.trigger("click");         
  96.  
  97.         </script> 
  98.     </body> 
  99. </html>

 

 

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

2023-02-20 08:11:04

2023-01-18 23:20:25

編程開發

2017-10-24 13:02:29

2020-09-15 08:46:26

Kubernetes探針服務端

2025-10-27 01:11:00

2017-05-05 08:12:51

Spark共享變量

2021-10-28 19:10:02

Go語言編碼

2024-04-10 08:39:56

BigDecimal浮點數二進制

2021-09-03 11:15:18

場景sql配置

2024-04-01 08:05:27

Go開發Java

2023-04-26 11:29:58

Jenkins版本Java 11

2018-10-31 11:30:28

Redis數據分布式鎖

2017-07-17 15:46:20

Oracle并行機制

2021-05-27 22:46:00

Nacos Clien版本Nacos

2023-09-22 11:29:11

JavasubList

2024-10-09 08:09:11

2025-05-27 01:55:00

MySQL數據庫工具鏈

2022-11-18 07:34:12

Docker項目目錄

2021-10-15 06:49:37

MySQL

2010-05-25 13:34:18

MySQL命令
點贊
收藏

51CTO技術棧公眾號

亚洲风情在线资源站| 青青草国产成人av片免费| 亚洲精品99久久久久| 精品免费国产一区二区| 蜜桃视频网站在线观看| 国产经典欧美精品| 欧美专区日韩视频| 紧身裙女教师波多野结衣| 欧美变态网站| 欧美日韩国产经典色站一区二区三区| 日韩中文在线字幕| 日本天堂在线| 国产精品99久久久久久宅男| 2019中文字幕免费视频| 国产免费一区二区三区四区| 日韩大尺度在线观看| 欧美日韩国产一区二区三区地区| 热99这里只有精品| 成年视频在线观看| 国产亚洲精品中文字幕| 国产亚洲情侣一区二区无| 伊人久久国产精品| 日韩午夜电影| 欧美高跟鞋交xxxxxhd| 欧美一区二区三区成人精品| 亚洲精品一区国产| 欧美日韩一级片网站| 鲁一鲁一鲁一鲁一色| 综合久久2019| ...xxx性欧美| 天堂社区 天堂综合网 天堂资源最新版| 亚洲第一大网站| 国内精品伊人久久久久影院对白| 国产成人亚洲综合91精品| 久久精品视频国产| 国产精品久久久乱弄| 亚洲欧洲在线免费| 完美搭档在线观看| 91精品啪在线观看国产爱臀| 欧美日韩亚洲丝袜制服| 国产第一页视频| 深夜成人在线| 精品欧美aⅴ在线网站| 精品久久久久久无码中文野结衣| 污污的网站在线看| 亚洲日本欧美天堂| 亚洲AV无码成人精品一区| 成人综合影院| 欧美高清在线一区| 日本不卡在线观看| 久久久资源网| 久久九九久久九九| 欧美日本韩国国产| 黄上黄在线观看| 26uuu亚洲综合色欧美| 久久综合九色综合久99| 三级国产在线观看| 久久久综合九色合综国产精品| 精品久久sese| 四虎电影院在线观看| 2023国产精品自拍| 日韩wuma| 米奇777四色精品人人爽| 国产精品女人毛片| 中国老女人av| 久久99亚洲网美利坚合众国| 亚洲成人一二三| 无码aⅴ精品一区二区三区浪潮| 中国字幕a在线看韩国电影| 欧美性xxxxx极品娇小| 日韩视频第二页| 亚洲不卡系列| 欧美另类高清zo欧美| 深爱五月综合网| 哺乳一区二区三区中文视频| 国产视频久久久久| 精品手机在线视频| 亚洲高清资源在线观看| 欧美人成在线视频| 久久久精品福利| 免费高清在线一区| 国产成人免费电影| 国产精品天堂| 一区二区三区日韩在线观看| 国产女大学生av| 久久xxx视频| 日韩一级完整毛片| 精品人妻一区二区三区香蕉| 99久久国产综合精品成人影院| 欧美成人亚洲成人| 亚洲 日本 欧美 中文幕| 麻豆国产精品官网| 国产日韩精品推荐| 91九色在线porn| 一区二区久久久久| 精品久久久久久久无码| 亚洲日本一区二区三区在线| 亚洲男人的天堂网站| 日本黄色片免费观看| 国产精品久久久久久模特| 国产美女久久精品香蕉69| 性生活三级视频| 日本一区免费视频| 日韩欧美精品免费| 欧洲午夜精品| 日韩精品中文在线观看| 紧身裙女教师波多野结衣| 久久裸体视频| 懂色中文一区二区三区在线视频| 精品成人一区二区三区免费视频| 一区二区三区欧美亚洲| 男人天堂1024| 91成人短视频| 久久精品视频在线观看| 亚洲乱码国产乱码精品| 成人爽a毛片一区二区免费| 亚洲国产精品一区二区第一页| av蜜臀在线| 日韩一区二区麻豆国产| 91禁男男在线观看| 久久精品首页| 久久久久久一区| 免费毛片在线看片免费丝瓜视频| 欧美视频日韩视频在线观看| 亚洲 欧美 日韩在线| 综合久久精品| 成人av番号网| 四虎久久免费| 欧美午夜一区二区三区| 欧美色图亚洲激情| 国产欧美日韩亚洲一区二区三区| 91超碰在线电影| 香蕉视频免费在线播放| 色狠狠色噜噜噜综合网| 免费观看一级一片| 日韩一级不卡| 狠狠色伊人亚洲综合网站色| 国产盗摄一区二区| 欧美大胆一级视频| 26uuu成人网| 精品一区二区免费在线观看| 午夜一区二区三区| 欧美日韩亚洲国产| 中文国产成人精品| 中文字幕第31页| 国产精品美女久久久久av爽李琼| 三级a在线观看| 日韩欧美二区| 成人做爽爽免费视频| 日本在线视频网| 欧美人xxxx| 青娱乐免费在线视频| 国产精品一区二区视频| 真实国产乱子伦对白视频| av综合网址| 88国产精品欧美一区二区三区| 天堂中文在线资源| 色婷婷激情综合| 中文字幕第20页| 日韩精品成人一区二区三区| 亚洲巨乳在线观看| 亚洲天堂网站| 欧美激情视频三区| 日本激情一区二区| 黑人与娇小精品av专区| 四虎国产精品成人免费入口| 日本午夜精品一区二区三区电影| 亚洲一区二区三区涩| 中文成人在线| 欧美精品久久久久久久免费观看| 五月天久久久久久| 欧洲一区二区av| 亚洲一级生活片| 国产91综合一区在线观看| 欧洲黄色一级视频| 水蜜桃精品av一区二区| 亚洲综合视频1区| 国产精品vvv| 中文字幕在线成人| www.天堂av.com| 一本到三区不卡视频| 希岛爱理中文字幕| 99视频有精品| 欧美国产日韩另类| 日韩图片一区| 成人短视频在线看| 麻豆精品少妇| 91精品久久久久久久久久久久久久 | 精品国产丝袜高跟鞋| 精品国产伦理网| 亚洲性猛交富婆| 亚洲愉拍自拍另类高清精品| 成人免费毛片糖心| 国产福利91精品| 成人免费观看毛片| 欧美色图麻豆| 午夜视频久久久| 丝袜美腿综合| 亚洲自拍偷拍一区| 少妇精品视频一区二区免费看| 欧美日韩国产第一页| www日韩tube| 亚洲福利视频免费观看| 国产精品高潮呻吟久久久| 狠狠爱在线视频一区| 人妻少妇精品一区二区三区| 国产日韩欧美激情| 99re久久精品国产| 国产高清亚洲一区| 欧美日韩一区二区三区69堂| 国产一区二区你懂的| 国产精品一二三在线观看| 精品久久久久久久| 欧美伦理一区二区| 国产福利资源一区| 91在线视频精品| 成人日韩av| 日本精品一区二区三区在线播放视频| 羞羞污视频在线观看| 日韩天堂在线视频| 91社区在线| 国产一区二区三区在线观看视频| 色网站免费观看| 精品国产免费一区二区三区四区 | 亚洲老头老太hd| 亚洲精品一区二区三区不卡| 欧美高清www午色夜在线视频| 国产原创视频在线| 欧美日韩国产一区在线| 日韩精品一卡二卡| 亚洲国产日韩a在线播放性色| 日韩欧美在线视频播放| 国产区在线观看成人精品| 97人妻精品一区二区三区免| 风流少妇一区二区| 波多野结衣中文字幕在线播放| 免费成人av资源网| 中文字幕第88页| 蜜桃91丨九色丨蝌蚪91桃色| 日韩欧美黄色大片| 日韩精品视频网站| 波多野结衣天堂| 天堂av在线一区| 国产精品乱码久久久久| 久久综合网络一区二区| 任你操这里只有精品| 日韩高清不卡一区二区| 黑森林精品导航| 久久aⅴ国产欧美74aaa| 亚洲欧美日韩综合网| 久久99精品国产| 中文字幕第38页| 激情综合色播激情啊| 51自拍视频在线观看| 成人午夜在线播放| 欧美日韩人妻精品一区在线| 91视频观看免费| 亚洲黄色小说视频| 国产精品乱码一区二区三区软件| 亚洲欧美另类日本| 亚洲欧美精品午睡沙发| 国产性生活网站| 精品美女久久久久久免费| 国产情侣自拍av| 欧美性色欧美a在线播放| 中文字幕乱码中文字幕| 日韩午夜在线影院| 无码国产精品一区二区免费16| 亚洲无av在线中文字幕| 免费大片黄在线观看视频网站| 欧美高清第一页| 亚洲精品福利电影| 国产日韩精品一区二区| 亚洲国产欧美国产第一区| 精品欧美一区二区久久久伦| av一区二区在线播放| 日本丰满大乳奶| 9久re热视频在线精品| 国产高潮免费视频| 国产精品性做久久久久久| 免费成人深夜夜行p站| 国产精品乱人伦中文| 中文字幕一区二区三区手机版| 91久久精品一区二区二区| 国产高清不卡视频| 亚洲人成在线免费观看| 国产一区久久精品| 欧美亚洲成人精品| 懂色av色香蕉一区二区蜜桃| 久久久久欧美| 香蕉精品视频在线观看| 2022亚洲天堂| 国产一区欧美一区| av男人的天堂av| 亚洲综合色婷婷| 中文字幕人成人乱码亚洲电影| 精品久久久久久久人人人人传媒| 岛国最新视频免费在线观看| 久久久久久久久久久亚洲| www.一区| 国产一区喷水| 综合av在线| 久久这里只精品| 91丨九色丨国产丨porny| 国产成人久久久久| 在线影视一区二区三区| 欧美一级特黄aaaaaa| 色av中文字幕一区| 欧美性xxx| 久久精品国产精品国产精品污 | 久久久久久国产精品久久| 巨大黑人极品videos精品| 久久精品中文字幕一区二区三区| 亚洲精品二区三区| 一本岛在线视频| 久久美女高清视频| 日本在线免费观看| 日韩欧美国产小视频| 色多多视频在线观看| 日本一本a高清免费不卡| 欧美顶级毛片在线播放| 99热这里只有精品免费| 久久99精品久久久久久国产越南| www.色天使| 精品成人久久av| 全国男人的天堂网| 欧美夫妻性生活xx| 国产不卡精品| 亚洲午夜在线观看| 日本视频免费一区| 91在线无精精品白丝| 欧美性猛交xxxx富婆弯腰| 色就是色亚洲色图| 97成人在线视频| 秋霞综合在线视频| 国产午夜伦鲁鲁| 91小视频在线免费看| 草久视频在线观看| 亚洲乱码国产乱码精品精天堂| 国产高清视频色在线www| 久久99欧美| 性8sex亚洲区入口| 中文字字幕码一二三区| 欧美日韩在线视频观看| 免费在线性爱视频| 热久久免费视频精品| 亚洲图片久久| 日韩欧美在线免费观看视频| 国产日韩欧美精品一区| 中文字幕人妻一区二区在线视频| 丝袜亚洲另类欧美重口| 国产精品色婷婷在线观看| 中文字幕欧美人与畜| 精品一区二区三区在线播放视频| 97在线观看免费高| 欧美一区二区三区人| 第一中文字幕在线| 精品蜜桃一区二区三区| 丝袜美腿亚洲一区| 伊人影院综合网| 538prom精品视频线放| 亚洲性图自拍| 久久99精品久久久久久三级| 老鸭窝毛片一区二区三区| jizz18女人高潮| 日韩一级精品视频在线观看| 大黄网站在线观看| 欧美日韩国产不卡在线看| 麻豆一区二区99久久久久| 国产高清在线免费观看| 精品久久国产97色综合| 亚洲一二三四| 国产精品夜夜夜爽张柏芝| 成人精品视频一区二区三区尤物| yjizz国产| 日韩性生活视频| caoporn成人免费视频在线| www黄色在线| 亚洲色图一区二区三区| 天堂av资源在线| 国产日韩在线观看av| 在线不卡视频| 久久久久久成人网| 精品久久久久香蕉网| 成人视屏在线观看| 性生活免费观看视频| 久久亚洲春色中文字幕久久久| 国产一区二区三区成人| 亚州欧美日韩中文视频| 欧美成人直播| 黄色免费看视频| 欧美精品一级二级| 国产三级电影在线播放| 一本一道久久久a久久久精品91| 成人免费va视频| 91国产免费视频| 日本精品一区二区三区在线播放视频 | 电影91久久久| 亚洲人成无码www久久久| 亚洲综合久久久|