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

Dojo1.6新特性:HTML 5進行時

開發 前端
Dojo作為最老牌的JavaScript庫之一,近年來也一直沒有停止過對各種新技術的應用,對新標準的融合。也許你已經使用dojo很久,但可曾注意過dojo中對HTML5的應用呢?本文將就此為大家介紹一些Dojo中已經用到的HTML5特性!

近年來HTML5的關注度越來越高。雖然該規范還在緊鑼密鼓地制定中,但是相信很多HTML5的概念大家已經耳熟能詳,如具有強大繪圖功能的canvas、有望替代Flash播放器的視頻(vedio)音頻(audio)標簽、得到增強的各種表單元素、為提供大數據存儲而設計的Web Storage、統一的標簽自定義屬性設計、內置的元素拖拽功能等。這些新特性無疑將為用戶帶來更酷的用戶體驗,同時也將為廣大Web開發者提供更廣闊的平臺。

Dojo作為最老牌的JavaScript庫之一,近年來也一直沒有停止過對各種新技術的應用,對新標準的融合。也許你已經使用dojo很久,但可曾注意過dojo中對HTML5的應用呢?本文將就此為大家介紹一些Dojo中已經用到的HTML5特性!

◆ 支持HTML5 自定義屬性的dojo.parser

◆ 支持HTML Canvas的dojox.gfx和dojox.charting

◆ 支持HTML5 indexed Database Object Store API 的 dojo.store API

◆ 基于HTML5 localstorage的dojox.storage.LocalStorageProvider

◆ 支持HTML5 multiple file input 的 dojox.form.Uploader

◆ 支持HTML5 自定義屬性的dojo.parser

如何為頁面中的一個節點設置一個自定義屬性來判斷該節點是否可以被拖拽?面對這個問題,我們可能會不假思索地為節點附上一個“draggable”屬性。但我們往往忽略了一點——這個“draggable”屬性是否會與別的屬性發生沖突?我們的經驗告訴我們不會。的確,在HTML5之前,我們往往會通過這種方式來實現拖拽功能。但不幸的是,在HTML5中,“draggbale”已經是標準屬性之一,這也就意味著修改“draggable”屬性會修改節點對應的瀏覽器行為,而這并不一定是你想要的。

其實在dojo1.5之前的版本中,我們就一直在使用這種可能存在風險的自定義屬性?;叵胍幌挛覀兪侨绾斡脴撕灺暶饕粋€常用的dojo按鈕控件dijit.form.Button的:

  1. <button id="button1" dojoType="dijit.form.Button">Button1</button> 

雖說dojoType并不太可能成為HTML標準屬性之一,但不可否認這不是一種優雅的實現方式。

而HTML5中已經有了針對自定義屬性的規范。所有自定義屬性都必須以data-作為前綴。這樣就可以很方便的將HTML標準屬性與自定義屬性區分開來,不僅提供了代碼的可讀性也避免了與標準屬性沖突的風險。

在dojo1.6中,也針對HTML5的這一規范做出了相應的改進。你可以在dojo1.6中發現一系列符合標準的自定義屬性,這些屬性已經可以被dojo.parser正確地識別出來:

◆ data-dojo-config:取代了原來的dojoConfig,用以配置dojo庫的各項參數

◆ data-dojo-type:取代了原來的dojoType屬性,用以指定所用的dojo對象類型

◆ data-dojo-props:取代了原來所有初始化dojo控件的自定義屬性。

其中data-dojo-config與data-dojo-type的使用方法與原來的dojoConfig以及dojoType沒有區別。而data-dojo-props則大大美化了初始化控件時的屬性配置代碼。

使用非HTML5標準屬性時,聲明一個簡單的CheckBox我們可能需要為節點單獨設置5個屬性值:

  1. <input name="cb1" id="cb1" value="foo"   
  2.     dojoType="dijit.form.CheckBox"   
  3.     onClick="console.log('clicked cb1')"> 

而在使用HTML5標準屬性data-dojo-props之后,我們則只需要設置三個屬性:

  1. <input id="cb1" data-dojo-id="cb1" data-dojo-type="dijit.form.CheckBox"   
  2.     data-dojo-props='name:"cb1", value:"foo",   
  3.     onClick:function(){ console.log("clicked cb1") }'/>  

更值得注意是,這樣的聲明方法和使用JavaScript動態創建一個CheckBox非常相似:

  1. new dijit.form.CheckBox({  
  2. id: "cb1",  
  3. name: "cb1",  
  4. value: "foo",  
  5. onclick: function(){console.log("clicked cb1")},  
  6. }, "cb1"); 

這是因為dojo.parser會將data-dojo-props中的內容作為一個散列參數表來初始化控件。這使得標簽和代碼兩種形式的初始化代碼可以最大程度上的保持一致。

可見,HTML5的自定義屬性在dojo中得到了充分的利用,帶來了很好的效果。不過在dojo1.6中,這樣的自定義屬性還不能使用在dojox.mobile包中的控件上。不過可以預見,在以后的版本中,dojox.mobile包中的控件也將支持這一實用的特性。

支持HTML Canvas的dojox.gfx和dojox.charting

在HTML5眾多特性之中,Canvas可能是帶給大家感受最深的一個了。眾多基于Canvas的應用充分展示了它強大的繪圖功能。其基本繪圖流程如下:

  1. // 獲取canvas元素  
  2. var canvasElementdocument.getElementById("canvas");  
  3. // 默認瀏覽器支持Canvas,獲取canvas元素對應的2D上下文環境  
  4. var canvasContext = canvasElement.getContext("2d");  
  5. If(canvasContext){  
  6.     canvasContext.fillStyle = "#1433FF"; //設置繪圖的填充色  
  7.     canvasContext.strokeStyle = "#FF1500"; //設置繪圖的線條顯色  
  8.     canvasContext.lineWidth = 1; //設置繪圖的線條寬度  
  9.     canvasContext.fillRect (10, 10, 110, 110); //繪制實心矩形  
  10.     canvasContext.strokeRect(10, 230, 110, 110); //繪制空心矩形  

此外canvasContext還提供了功能齊全的繪制折線、文字、陰影、圖片等API。這些內容已遠遠超過本文所涉及的范圍,因此不再一一贅述。

對于如此強大的Canvas,dojo其實也早已經將其整合到了自己的圖形模塊中。由于dojox.gfx包下的dojox.gfx.canvas模塊對 HTML5 Canvas API的繪圖接口進行了封裝,使得dojox.gfx的canvas繪圖接口VML、SilverLight繪圖沒有任何區別。你不需要任何的 Canvas API使用經驗,只需在dojo的配置選項中將圖形渲染模式設置為canvas即可:

  1. <script type="text/javascript" data-dojo-config="gfxRenderer:'canvas'"  src="dojo.js"></script> 

借助于dojox.gfx對于各種繪圖方式一直的接口,dojox.charting下的所有圖表也都支持canvas模式。只需將渲染模式設置為canvas,你便獲得了一套完全基于HTML5 Canvas API的圖表庫。

此外,你還可以通過為gfxRenderer配置候補選項來使dojox.gfx在不支持HTML5的環境下自動使用其他渲染器。如下列代碼就指定優先使用HTML5 Canvas進行圖形渲染,如果瀏覽器不支持canvas的話會依次嘗試svg和vml進行渲染。

  1. <script type="text/javascript" data-dojo-config="gfxRenderer:'canvas,svg,vml'"    
  2.     src="dojo.js"></script> 

支持HTML5 indexed Database Object Store API 的 dojo.store API

在HTML5中提出了一套基于鍵值對的數據存儲API。使用者可以簡單透明地通過使用以下方法來對存儲的數據進行查詢、更新、添加、刪除:

◆  get(index): 根據索引值獲取數據。

◆  put(value, /*可選*/ index): 更新數據記錄。

◆  add(value,/*可選*/ index): 添加數據記錄。若索引指向位置已存在記錄,則添加失敗。

◆  remove(index): 根據索引值移除數據記錄。

dojo 1.6中的dojo.store很好的實現了這一套接口,更加簡化了原有的dojo.data包所提供的數據存儲API。dojo.store包下有三種已實現的store:

◆  Memory:簡單、輕量級的store,適合處理小數據集。

◆  JsonRest:專門為REST API服務的store,適合處理大數據集。

◆  DataStore:用于為原有dojo.data包下的store提供object store api的store

這三種store雖然初始化方法和使用場景各有不同,但都提供了符合HTML5標準的get,put,remove方法(除了DataStore之外,也都提供了add方法)。用戶可以通過如下的流程對這些store進行很方便的操作:

  1. //獲取索引為some-id的記錄  
  2. var record =  store.get("some-id");  
  3. //修改獲取的記錄的bar字段  
  4. record.bar = newValue;  
  5. //更新該記錄  
  6. store.put(record);  
  7. //創建一條新記錄  
  8. var newRecord = {id: "some-new-id",   
  9.     bar: "bar",  
  10.     foo: "foo"  
  11. };  
  12. Store.add(newRecord ); 

我們可以看到使用dojo.store包實現的object store API進行數據管理就如同管理普通JavaScript Object一樣方便。之后我們還將看到這套API還完美的應用到了dojo對于HTML5 localstorage的實現——dojox.storage.LocalStoragePovider上。

#p#

基于HTML5 localstorage的dojox.storage.LocalStorageProvider

HTML5 在數據存儲方面不僅僅提供了方便的indexed Database Object Store API,還提供了十分有用的Local Storage。 Local Storage也被稱作Web Storage、Dom Storage。簡單地說其本質就是以鍵值對保存的Web頁面信息。和以前我們常用的cookies一樣,可以保存頁面相關信息,哪怕用戶離開當前頁面甚至直接關閉了瀏覽器。相較于cookies,Local Storage最大的特點就是可以儲存更多的信息——cookies最大只能保存4KB數據。同時Local Storage中的數據并不會被傳遞到服務器端(cookies則會隨著http請求被發送)。

LocalStorage的使用方法也十分簡便,從LocalStorage獲取一個值可以通過

  1. var value = localstorage.getItem("bar"); 

或更加簡便的

  1. localstorage["bar"]; 

方式獲得。

而向localstorage寫一個值可以通過

  1. localstorage.setItem("bar", "newValue"); 

或更加簡便的

  1. localstorage["bar"] = "newValue"; 

來實現。

dojo 的dojox.storage 包提供了各類常用的數據存儲工具:適用于cookies的CookieStorageProvider,適用于Google gears的GearsStorageProvider,適用于Adobe Air的AirDBStorageProvider、AireFileStorageProvider、 AireEncryptedLocalStorageProvider等。

其中dojo也專門針對HTML5 local storage特性提供了LocalStorageProvider。

LocalStorageProvider完全兼容簡便的Object Store API,其接口及其主要功能如下:

put: function( /*string*/ key, /*object*/ value, /*function*/ resultsHandler,/*string?*/ namespace)

用以保存一對鍵值。第一個參數為所要保存的數據的索引。第二個參數是所要保存的數據。第三個參數用以處理數據保存結果的回調函數(數據保存可能失敗)。最后一個參數為可選的命名空間名。dojo為了更好的管理存儲內容,提供了命名空間這一參數,其本質是將命名空間和索引組成一個形為 “__namespace_key”的新索引值,而命名空間的默認值為“default”。

get: function(/*string*/ key, /*string?*/ namespace)

用以獲取指定命名空間下的所給索引指向的數據。

第一個參數為所要獲取的數據的索引。第二個參數為可選的命名空間名,默認值為“default”。

remove: function(/*string*/ key, /*string?*/ namespace)

用以刪除指定命名空間下的所給索引指向的數據

第一個參數為所要獲取的數據的索引。第二個參數為可選的命名空間名,默認值為“default”。

clear: function(/*string?*/ namespace)

用以清空指定命名空間下的所有數據。參數為可選的命名空間名,默認值為“default”。

這些API不僅僅與dojox.storage包下的其余provider保持一致,還與dojo.store包中提供的store對象的接口兼容。因此 dojox.storage.LocalStorageProvider和dojo.store包為HTML5的存儲體系提供了完整的支持。

支持HTML5 multiple file input 的 dojox.form.Uploader

HTML5 中對各種標簽都進行了增強,其中也不乏對于各類HTML控件的改進。其中input標簽就獲得了名為multiple的新屬性。以前HTML中的 input標簽只能選擇單個文件,而有了multiple屬性之后,你可以使用input標簽一次性選擇多個文件。如有一個input控件:

  1. <input multiple="multiple" id="uploadfile" type="file" name="uploaddfile"></div> 

你可以點擊瀏覽按鈕之后在文件選擇窗口中一次性選擇多個需要的文件。并且可以通過如下代碼獲取選擇的文件信息:

  1. var files = document.getElementById("uploadfile").files; 

input標簽的文件選擇功能往往被應用于文件的上傳中。而dojo 1.6中的dojox.form.uploader則很好的利用了HTML5這一新特性實現了基于HTML5的多文件上傳。

首先dojox.form.Uploader會判斷當前的瀏覽器是否支持HTML5的增強版input標簽,如果支持,那么dojox.form.Uploader將會使用帶有multiple屬性的input標簽。

dojx.form.Uploader提供了以下API對HTML5的多文件上傳進行支持:

getFileList: function()

用以獲取當前選擇的文件信息。本質是獲取對應的input標簽下的files數據進行整理,并為每個文件添加索引。

upload: function(/*Object ? */formData)

用以上傳指定數據(文件),dojox.form.uploader.plugins.HTML5具體實現了該方法的HTML5版本(還有Flash和 Iframe兩種版本可選,分別由其余兩個插件實現)。該方法會判斷當前的瀏覽器是否支持FormData(Firefox 4以上和Webkit內核的瀏覽器基本都支持),若支持則使用該方式上傳,否則使用binary格式上傳。

submit: function(/* form Node ? */form)

用于當dojox.form.Uploader處于一個form表單之中時,同時上傳文件及表單內其他信息。

reset: function()

用以清除當前選擇的所有文件,還不支持清除單個指定的文件。

有了dojox.form.Uploader,你可以很方便的創建一個基于HTML5的多文件上傳控件,并使用其API對其進行控制。當然,dojo也為不支持HTML5這一新特性的瀏覽器提供了其他解決方案。你可以發現在dojox.form.uploader.plugins包下除了HTML5之外還有 IFrame和Flash兩種插件。如果瀏覽器不支持HTML5的多文件選擇功能,那么dojox.form.Uploader會自動嘗試使用這兩個插件來實現多文件上傳。你無需為了讓代碼可以跨平臺而花費任何精力。

總結

現在我們可以發現,在Dojo中,HTML5其實早已應用在各個方面,從數據存儲到圖形繪制,從代碼風格到具體控件。相信在將來的版本中,Dojo會一如既往的融入各種新技術、兼容各種新標準,提供更好的用戶體驗!

【編輯推薦】

  1. 拖拽:從 Dojo 到 HTML 5
  2. 用Dojo實現Ajax請求:XHR、跨域、及其他
  3. IBM發布開源HTML 5可視化設計工具Maqetta
  4. HTML 5的革新:結構之美
  5. 九個令人驚嘆的HTML 5和JavaScript實驗
責任編輯:陳貽新 來源: infoq
相關推薦

2011-04-22 15:02:19

HTML5Dojo

2011-04-25 15:22:59

DojoAMD

2010-04-02 08:56:00

HTML 5

2011-08-30 09:07:30

HTML 5

2011-07-12 13:21:34

2011-11-09 10:05:26

HTML 5

2011-02-23 11:22:59

DojoHTML 5

2009-09-25 10:23:51

HTML 5新特性

2011-02-25 10:19:23

ibmdwHTML5Web開發

2010-05-17 10:05:55

Subversion1

2009-07-07 12:30:38

JDK1.6

2011-08-01 16:43:51

ibmdwHTML5Dojo

2011-09-08 09:38:46

HTML5 WidgeDojo

2011-07-19 13:39:20

iOS HTML5

2011-11-18 13:25:48

HTML 5

2009-06-29 17:42:03

Tapestry5新特

2010-07-23 10:08:44

Dojo 1.5

2011-02-14 10:49:40

HTML 5

2014-04-15 15:45:22

Java8Java8教程

2020-10-09 11:02:46

HTML5 特性
點贊
收藏

51CTO技術棧公眾號

最新高清无码专区| 久久福利视频一区二区| 亚洲欧美日本精品| 久久国产激情视频| 国内老司机av在线| 久久精品一区二区| 91久久久久久久久久久| 国产成人精品片| 成人毛片免费看| 日韩一区二区在线看| 成人一对一视频| 男女啪啪在线观看| av一区二区三区黑人| 国产欧美精品一区二区三区介绍| 黄网站免费在线| 欧美午夜精品一区二区三区电影| 精品国产一区二区三区忘忧草| 日日碰狠狠躁久久躁婷婷| 在线中文字幕第一页| 国产欧美日韩久久| 精品一区二区国产| 99在线无码精品入口| 久久亚洲色图| 国内成人精品一区| 久久99久久99精品免费看小说| 日韩福利视频一区| 日韩精品一区二区三区三区免费| 成人黄色片视频| 免费网站在线观看人| 国产精品久久午夜夜伦鲁鲁| 久久99精品久久久久久水蜜桃| 国产偷拍一区二区| 麻豆专区一区二区三区四区五区| 57pao国产精品一区| 久久综合亚洲色hezyo国产| 日本激情一区| 国产一区二区三区高清在线观看| 影音先锋人妻啪啪av资源网站| 看亚洲a级一级毛片| 欧美日韩国产不卡| 天天天干夜夜夜操| 经典三级一区二区| 在线精品视频小说1| 黑人糟蹋人妻hd中文字幕| 色婷婷在线播放| 亚洲柠檬福利资源导航| 亚洲一区三区电影在线观看| 北条麻妃在线| 欧美极品美女视频| 日韩在线国产| www 日韩| 18涩涩午夜精品.www| 一本一道久久a久久精品综合| 懂色一区二区三区| 国产精品久久久久久久久果冻传媒 | 亚洲国产天堂久久国产91| 亚洲911精品成人18网站| 久久久91麻豆精品国产一区| 91精品国产欧美一区二区18| 免费在线观看污网站| 国产精品亚洲欧美一级在线| 538在线一区二区精品国产| 日韩在线一区视频| 精品午夜视频| 日韩视频永久免费| 99精品一区二区三区无码吞精| www国产精品| 亚洲精品动漫久久久久| 日本黄色片在线播放| 综合亚洲自拍| 色老头一区二区三区| 中文字幕观看av| 亚洲一区二区| 久久免费国产精品1| 九九精品免费视频| 蜜桃视频在线一区| 国产91亚洲精品一区二区三区| 天堂av资源网| 中文字幕第一页久久| 男人天堂成人网| 日本黄色免费在线| 欧美丝袜丝nylons| 99久久综合网| 国产精品免费99久久久| 久久久国产91| 九九热精品视频在线| 美女性感视频久久| 国产精品加勒比| 国产区在线视频| 亚洲精品国产精华液| 亚洲精品天堂成人片av在线播放| 日本蜜桃在线观看视频| 欧美日韩美少妇| 欧美双性人妖o0| 久久裸体网站| 97在线免费观看| 中文字幕日韩三级| www.欧美.com| 亚洲一区二区在| 波多野结衣亚洲| 欧美一区二区视频免费观看| 少妇真人直播免费视频| 亚洲精品一区二区在线看| 97在线视频免费观看| 成人毛片在线播放| 国产精品一区三区| 日韩欧美国产二区| 成av人片在线观看www| 欧美日韩一区在线观看| 色天使在线视频| 欧美大片一区| 国产精品视频专区| 日韩在线免费播放| 亚洲黄色免费电影| 色www免费视频| 青草久久视频| 久久久久久国产精品美女| 中文字幕第315页| 91麻豆123| 男女猛烈激情xx00免费视频| 9999精品| 中文字幕日韩免费视频| 成人免费毛片男人用品| 不卡一区二区三区四区| 乱子伦一区二区| 精品福利在线| 国产午夜精品一区理论片飘花| 日韩黄色a级片| 国产精品一卡二| 亚洲图片都市激情| 欧美日韩五区| 亚洲奶大毛多的老太婆| 日本道在线观看| 成人av网址在线| 黄网站色视频免费观看| 国产精品麻豆| 精品国产欧美成人夜夜嗨| 中文字幕在线一| 国产欧美日韩在线| 久久久久久三级| 成人看的视频| 国产精品一区二区3区| caoporn国产精品免费视频| 一本久久精品一区二区| av无码av天天av天天爽| 亚洲资源av| 日本不卡免费新一二三区| 9i看片成人免费高清| 国产婷婷成人久久av免费高清| www.av麻豆| 久久综合av免费| 欧美一区二区三区免费视| 亚洲国产成人一区二区| 一区二区三区四区亚洲| 久久久久久久久久久影视| 欧美精品激情| 国内一区在线| 亚洲欧美一区二区三区| 亚洲视频自拍偷拍| 国产成人精品一区二区色戒| 国产精品视频yy9299一区| 亚洲精品自拍网| 99精品视频在线| 91免费视频国产| 欧美人与性动交α欧美精品图片| 精品国产网站在线观看| 国产无人区码熟妇毛片多| 久久久精品天堂| 中文字幕 日韩 欧美| 91精品推荐| 精品国产乱码久久久久久蜜柚| 天堂av在线| 中文字幕v亚洲ⅴv天堂| 国产女人18毛片水真多| 亚洲香肠在线观看| 亚欧洲乱码视频| 奇米影视一区二区三区小说| 亚洲小视频在线播放| 丁香综合av| 国产91在线视频| 麻豆传媒在线观看| 亚洲电影免费观看高清完整版在线| 一区二区三区福利视频| 国产精品女人毛片| 少妇伦子伦精品无吗| 99精品欧美| 亚洲天堂av免费在线观看| 一区中文字幕| 国产精品丝袜高跟| 91豆花视频在线播放| 怡红院精品视频| 亚洲av无码乱码国产麻豆| 欧美午夜精品久久久久久久| 少妇太紧太爽又黄又硬又爽小说 | 国产精品久久久久久亚洲色| 久久亚洲图片| 99热这里只有精品免费| 波多野结衣的一区二区三区| 91传媒视频在线观看| 欧美二三四区| 欧美日韩国产123| 在线免费av网站| 亚洲国产美女久久久久| 国产农村妇女毛片精品久久| 一本色道亚洲精品aⅴ| 波多野结衣亚洲一区二区| 久久免费视频色| 亚洲激情 欧美| 国产又粗又猛又爽又黄91精品| 91国视频在线| 欧美日韩蜜桃| av动漫免费观看| 欧美久久精品一级c片| 国内精品视频免费| aaa国产精品| 成人欧美一区二区三区在线| 亚洲精品粉嫩美女一区| 2021久久精品国产99国产精品| 毛片在线看片| 亚洲午夜精品久久久久久久久久久久| 欧美一区二区三区黄片| 日韩亚洲欧美中文三级| 亚洲综合视频在线播放| 欧洲人成人精品| 欧美三日本三级少妇99| 一区二区三区精品久久久| 91狠狠综合久久久| 日本一区二区成人| 韩国三级hd中文字幕| 91在线视频在线| 怡红院一区二区| 处破女av一区二区| 国产无套精品一区二区三区| 精品综合免费视频观看| 亚洲污视频在线观看| 日韩中文字幕一区二区三区| 妞干网在线免费视频| 亚洲综合国产激情另类一区| 免费无码不卡视频在线观看| 亚洲日产国产精品| 欧美黑人经典片免费观看| 在线观看视频免费一区二区三区| 国产精品视频二| 激情综合中文娱乐网| 精品久久久久久无码中文野结衣| 欧美激情日韩| 日韩极品视频在线观看| 亚洲午夜极品| heyzo亚洲| 久久久夜夜夜| 欧美黄色性生活| 精品一区二区日韩| 午夜av中文字幕| 国产成人在线免费观看| 扒开伸进免费视频| 91影院在线观看| 国产精品亚洲无码| 国产蜜臀av在线一区二区三区| 久久精品国产亚洲AV成人婷婷| 国产精品电影一区二区三区| 破处女黄色一级片| 亚洲高清三级视频| 99久久久久久久久| 欧美日韩综合在线| 超碰免费在线97| 亚洲电影免费观看| 高清中文字幕一区二区三区| 在线观看国产精品日韩av| 大地资源网3页在线观看| 色综合色综合久久综合频道88| 999福利在线视频| 国产91在线播放九色快色| 自拍偷拍亚洲图片| 黄色91av| 日韩在线第七页| 国产午夜精品视频一区二区三区| 亚洲精品护士| 伊人网在线综合| 丁香婷婷综合五月| 波多野结衣 在线| 亚洲天堂成人在线观看| 国产成人在线免费观看视频| 欧美图片一区二区三区| www.久久久久久| 亚洲午夜女主播在线直播| 伊人电影在线观看| 人体精品一二三区| 精品99re| 午夜精品福利一区二区| 欧美日韩一卡| 国产免费999| 岛国精品一区二区| 亚洲 欧美 国产 另类| 精品国产乱码久久久久久虫虫漫画| 中文天堂在线播放| 欧美精品一区二区在线播放| 韩国中文字幕2020精品| 欧美xxxx做受欧美.88| 免费观看一级欧美片| 亚洲一区二区在线播放| 国产欧美日韩精品一区二区三区 | 精品国产免费人成在线观看| 免费a在线观看| 97久久国产精品| 日韩国产91| 日韩在线导航| 国产欧美精品久久| 免费看的av网站| 国产精品毛片a∨一区二区三区| 日韩激情在线播放| 91精品久久久久久久99蜜桃| 国产中文字幕在线| 午夜精品久久久久久久99热| 999精品嫩草久久久久久99| 欧美日韩高清在线一区| 亚洲清纯自拍| 免费啪视频在线观看| 亚洲欧洲精品一区二区三区| 精品不卡一区二区| 日韩成人中文字幕| 欧美极品少妇videossex| 91久久久久久久久久久| 久久国产精品亚洲人一区二区三区| 国产中文字幕在线免费观看| 国产成都精品91一区二区三| 紧身裙女教师波多野结衣| 精品视频一区三区九区| 欧美精品少妇| 人体精品一二三区| 亚洲免费观看高清完整版在线观| 亚洲中文字幕无码av永久| 国产不卡视频一区| 久久97人妻无码一区二区三区| 欧美一级高清片| 草莓福利社区在线| 91精品视频在线| 天天天综合网| 三区视频在线观看| 日韩理论片网站| 国产又黄又大又爽| 精品国产美女在线| 国产一区二区三区免费在线| 国产精品99久久久久久大便| 精品午夜一区二区三区在线观看| 免费成人美女女在线观看| 在线播放91灌醉迷j高跟美女| 免费在线观看av片| 亚洲综合在线中文字幕| 欧美91视频| 无码人妻一区二区三区精品视频| 亚洲国产三级在线| 视频污在线观看| 51午夜精品视频| 狠狠做深爱婷婷综合一区| 亚洲综合色在线观看| 亚洲欧美一区二区久久| 亚洲爆乳无码一区二区三区| 欧美二区在线播放| 久久1电影院| www黄色av| 1024国产精品| 刘玥91精选国产在线观看| 91av在线播放视频| 精品理论电影在线| 奇米777在线视频| 亚洲国产精品久久一线不卡| 熟妇人妻av无码一区二区三区| 欧美中文字幕在线视频| 日本不卡免费一区| 欧美一区二区三区影院| 精品免费在线视频| 成av人电影在线观看| 7777精品伊久久久大香线蕉语言| 99riav国产精品| 国产探花视频在线播放| 欧美一卡二卡在线观看| а√在线中文在线新版| 亚洲不卡一卡2卡三卡4卡5卡精品| 免费人成黄页网站在线一区二区| 欧美黑人一级片| 亚洲精品视频二区| 色999韩欧美国产综合俺来也| 成人免费观看在线| 国产精品网站在线观看| 国产成人久久精品77777综合| 97色在线视频观看| 清纯唯美日韩| 国产+高潮+白浆+无码| 欧美日韩国产欧美日美国产精品| 欧美人与牲禽动交com| 任我爽在线视频精品一| 国产激情一区二区三区| 亚洲 日本 欧美 中文幕| 欧美大片大片在线播放| 国产伦精品一区二区三区视频| 女教师高潮黄又色视频| 在线观看精品一区| 超黄网站在线观看| 制服丝袜综合日韩欧美| 91啪亚洲精品|