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

HTML 5基礎之HTML 5 API的威力

開發 后端 前端
HTML5反映了在網絡上和在云端實施業務的方式的巨大變化。本篇文章分三部分介紹了HTML5的API,使用一個例子頁面來說明它們的功能。

本篇文章是一個由四個部分構成的系列的第三部分,該文章系列旨在尋找并突出說明HTML5中的變化。其開始先介紹新的標簽和頁面的組織,接著提供一些網頁設計方面的高層面信息,然后是表單的創建,以及API的使用及其價值所在,最后是Canvas提供的一些頗具創意的可能做法。這一第三部分介紹了HTML5的API,使用一個例子頁面來說明它們的功能。

那么,什么是API呢?

應用編程接口(application program interface,API)是訪問一個軟件應用的編程指令和標準的集合。通過使用API,你就可以設計出由API提供的服務來驅動的產品。

HTML5擁有一些新的API,例如:

1. 一個與新的畫布元素一起使用的2D繪圖API,用于渲染圖形或是其他的視覺圖像

2. 一個支持離線web應用的緩存機制的API

3. 一個播放視頻和音頻的API,與新的視頻和音頻元素一起使用

4. 一個歷史記錄API,其把瀏覽歷史變成可訪問的,并允許把頁面添加到這一歷史中

5. 一個和draggable屬性一起使用的拖放API

6. 一個和contenteditable屬性一起使用的編輯API

7. 鍵-值對以及內嵌的SQL數據庫的客戶端存儲,使用了JavaScript API

本篇文章重點關注兩個API:Geolocation和Web Worker,首先對這些API本身進行分析,然后創建一個包含這兩個API的頁面。

無處不在的業務:Geolocation

Geolocation API被用來確定和分享地理位置,API返回經度和緯度坐標——這是企業可用來在這一坐標附近的區域提供服務的信息,這類服務通常被稱作基于位置的服務(location-based service, LBS)。

LBS以地理數據源為參考,這些地理數據源被用來標識被監控儀器的物理位置,從而識別出與這一位置相關的人。這一功能賦予感興趣的各方與這一個人進行交互的機會,這種交互是基于一些以地理位置為中心的興趣點市場來進行的。

商業實際上是為客戶創造品質、實用性和價值,并同時為利益相關者、債權人、股東、員工和供應商創造經濟和金融利益。以地理位置為驅動力的LBS使得跟蹤和監控一個包裹或是使用了非瀏覽器設備或是瀏覽器的個人變得相當容易起來。從商業化的角度來說,地理位置所涉及的就是使用地理資產來確定某人或是某物所處的位置,然后把這一特定的一組信息出售給想要把這些信息用于社會、商業或是其他目的的的任何人,只要信息的擁有者的這種做法是法律許可的就可以了。

地理定位(geolocation)的工作方式

Geolocation API基于navigator這一全局對象的一個新屬性:navigator.geolocation,這一JavaScript的navigator對象提供了一些關于訪問者的瀏覽器和系統的有用信息。Geolocation可以確定使用了IP地址、基于web的數據庫、無線網絡連接,以及三角定位或是GPS技術的訪問者的經度和緯度。應該要注意的一點是,由Geolocation提供的信息的準確性會基于獲取信息的手段而發生變化。偶然情況下,在一些位置上,你有可能不能獲得明確的地理位置讀數或是一點數據都接收不到。

腳本可使用navigator.geolocation對象來確定與用戶的宿主設備相關的位置信息,在檢索到位置信息之后,一個位置對象就會被創建出來,并使用這些數據做填充。

navigator.geolocation對象有三個方法:

1. getCurrentPosition()

2. watchPosition()

3. clearWatch()

getCurrentPosition()方法

getCurrentPosition()方法檢索用戶的當前位置,但只檢索一次。當該方法被腳本調用時,方法以異步的方式來嘗試獲取宿主設備的當前位置。異步通信意味著發送者和接收者并未同時地加入到這一通信過程中,使用異步通信能讓瀏覽器繼續進行其他方面的活動,這樣它就無需等待來自接收實體的響應。

 

 

 

 

getCurrentPosition()方法最多可以有三個參數:

1. geolocationSuccess:帶回當前位置的回調(callback)(必需的)

2. geolocationError. 有錯誤發生時使用的回調(可選的)

3. geolocationOptions. 地理位置選項(可選的)

navigator.geolocation.getCurrentPositon()方法使用一個Position對象作為參數來把宿主設備的當前位置返回給geolocationSuccess這一回調,如果有錯誤發生的話,geolocationError回調會使用一個PositionError對象來做調用。你可以設置geolocationOptions的三個屬性:

enableHighAccuracy、timeout和maximumAge,這些可選屬性相應的作用分別是啟用了高的精確性,如果設備支持這種高精確性的話;一個超時時段,這是位置應該被返回的最長等待時間;以及一個最大的時間數,緩存的位置在這一時間段內可被使用。

getCurrentPosition()方法的調用如下所示:

  1. void navigator.geolocation.getCurrentPosition(  
  2. geolocationSuccess, geolocationError, geolocationOptions); 

watchPosition()方法

watchPosition()方法定期輪詢用戶的位置,查看用戶的位置是否發生改變。其最多可帶三個參數。

當watchPosition被調用時,其異步地啟動一個查看過程,這一過程涉及了一個新的Position對象的獲取和一個watchID的創建。如果這一獲取操作是成功的,則相關的使用一個Position對象作為參數的geolocationSuccess就會被調用。在失敗時涉及的操作則是使用一個非空的geolocationError參數來調用該方法,watchPosition方法使用一個PositionError對象作為參數來生成geolocationError。當設備的位置發生改變時,一個合適的帶有新的Position對象的回調就會被調用。

watchPosition()方法的調用如下所示:

  1. long navigator.geolocation.watchPosition(  
  2. geolocationSuccess, geolocationError, geolocationOptions);  

 

 

clearWatch()方法

clearWatch()方法終止正在進行的watchPosition(),該方法只能帶一個參數。在調用時,其找到之前已經開始了的watchID參數并立即停止它。

clearWatch()方法的調用如下所示:

  1. void navigator.geolocation.clearWatch(watchID)  

Geolocation數據:Position對象

Geolocation API返回一個地理上的Position對象,該對象有兩個屬性:timestamp和coords。timestamp屬性表示地理位置數據的創建時間,coords屬性又包含七個屬性:

1. coords.latitude:估計緯度

2. coords.longitude:估計經度

3. coords.altitude:估計高度

4. coords.accuracy:所提供的以米為單位的經度和緯度估計的精確度

5. coords.altitudeAccuracy:所提供的以米為單位的高度估計的精確度

6. coords.heading: 宿主設備當前移動的角度方向,相對于正北方向順時針計算

7. coords.speed:以米每秒為單位的設備的當前對地速度

這些屬性中只有三項是保證有的:coords.latitude、coords.longitude和coords.accuracy,其余的返回null,這取決于設備的能力和其所采用的后端定位服務器。如果可能的話,heading和speed屬性可以基于用戶之前的位置計算出來。

發揮救援作用的web worker

web worker(web工作線程)補救了并發所引起的問題,web worker是HTML5家族對JavaScript的單線程問題的回答:它們在與主頁面分開的線程中運行處理過程,保留頁面以用于主要的功能,比如說維持一個穩定的UI等。

一個web worker是一個在后臺加載并執行的JavaScript文件,這些worker允許你動態地加載一個JavaScript,然后使用后臺的不會影響到UI的進程來執行腳本。web worker的訪問是受限的,其只允許傳遞字符串。因為web worker不使用瀏覽器的UI線程,所以他們不允許訪問DOM。worker可以使用這兩個worker全局范圍的self和this引用,worker和父頁面的通信是通過使用事件模型和postMessage()方法來實現的。

因為web worker有多線程行為,因此它們只能訪問JavaScript功能的一個子集,web worker可以:

1. 訪問navigator對象

2. 使用只讀的位置對象

3. 執行XMLHttpRequest以發送HTTP或是HTTPS請求

4. 使用setTimeout()/clearTimeout()和setInterval()/clearInterval()來設置時間或是時間間隔

5. 訪問應用的緩存

6. 使用 importScripts()方法來導入外部的腳本

7. 產生其他的web worker(子worker(subworker)必需有著與主頁面一樣的來源,且必須放置于與父worker同樣的地點。

web worker有兩種類型:專用型的worker和共享型的worker。

專用型web worker

專用型worker與創建它的腳本鏈接在一起,它可以與其他的worker或是瀏覽器組件通信,但是他不能與DOM通信。

專用型worker的創建方法是把一個JavaScript文件名傳遞給一個新的worker實例,通過指定worker的執行腳本URI來使用Worker()構造函數創建一個新的worker。要創建一個專用型worker的話,輸入下面給出的代碼,這一代碼創建了一個新的專用的Worker對象:

  1. var worker = new Worker('worker.js'); 

共享型web worker

共享型web worker和專用型worker一樣,不能訪問DOM,并且是受限地訪問窗體的屬性。共享型web worker只能與其他來自同一個域的共享型web worker通信,它的創建方法是把一個JavaScript名稱傳遞給一個新的共享型worker的實例來創建。

頁面腳本可以與共享型web worker通信,而然,與專用型web worker不同的是,通信是通過使用一個端口(port)對象并附加上一個消息事件處理程序來進行的。另外,在使用第一個postMessage()之前,你必須要調用端口的start()方法。

在收到web worker腳本的首個消息之后,共享型web worker把一個事件處理程序附加到激活的端口上。一般情況下,處理程序會運行自己的postMessage()方法來把一個消息返回給調用代碼,接著端口的start()方法生成一個有效的消息進程。

為了創建一個共享型web worker,你必須要創建一個SharedWorker對象而不是一個Worker對象。下面的代碼說明了如何創建一個新的SharedWorker對象:

  1. var worker = new SharedWorker('worker.js'); 

構造一個包含了這兩個API的頁面

你將設計一個包含了Geolocation和Web Worker API的基本工作模式的頁面,此外,你還會用到Google Map API來渲染作為地圖收集來的數據。

頁面的組織如圖1所示,其包含了一個使用< header>< /header>標簽來創建的Header區,一個使用< section>< /section>標簽來創建的Section區,以及一個使用< aside>< /aside>標簽來創建的Aside區。

圖1. API頁面的布局

HTML 5


< section>和< aside>區包含了API,Section區包含了Geolocation API,Aside區包含了web worker,其用來計算素數。

在執行時,網頁的顯示如圖2所示。如果要查看地理位置數據的話,你首先必須要同意共享你的信息。web worker在頁面加載時啟動,如果你想看一看找到的素數的話,點擊Display Web Worker按鈕。

圖2. API網頁

HTML 5 

#p#

HTML文件

HTML文件一開始的內容是清單1所示的標準的HTML5信息,< head>部分包含了一個到Google Maps API的調用,把sensor的值設置為False。使用Google Maps API對你狀態的要求是,你的應用是否在使用一個傳感器,比如說GPS來確立位置。你必須為你的Google Maps API應用聲明一個值為True或是False的sensor參數,sensor的值必須被聲明。< head>標簽還包含了到JavaScript和CSS3文件的鏈接,這些文件被用來處理網頁的功能和格式。

清單1. HTML文件開始部分的內容

  1. <!doctype html> 
  2. <html> 
  3. <head> 
  4. <title>Basic GeoLocation Map & Web Worker Prime Number Calculator</title> 
  5. <script src="http://maps.google.com/maps/api/js?sensor=false" kesrc="http://maps.google.com/maps/api/js?sensor=false"   
  6. type="text/javascript">< /script> 
  7. <LINK href="GeolocationWebWorker.css" kesrc="GeolocationWebWorker.css" rel="stylesheet" type="text/css"> 
  8. <script src="HTML-Part3-GeolocationWebWorker.js" kesrc="HTML-Part3-GeolocationWebWorker.js" type="text/javascript">< /script> 
  9. </head> 

<body>標簽包含了onLoad事件,該事件調用地理定位的初始化函數,如清單2所示。該函數檢驗地理定位是否可在這一瀏覽器中使用,這一初始化函數放在JavaScript文件中。如果瀏覽器可以和Geolocation API通信的話,地圖就會被渲染。

清單2. 初始化Geolocation

  1. <body onLoad="initGeoApp();"> 
  2. <header> 
  3. <hgroup> 
  4. <h1>Geolocation & Web Worker</h1> 
  5. <h2>Making it work</h2> 
  6. </hgroup> 
  7. </header> 

清單3中給出的< section>標簽包含了navigator.geolocation對象的輸出顯示信息,API返回的經度和緯度被用來創建地圖畫布,Position的coords數據也通過使用< span>< /span>標簽顯示出來。

清單3. Geolocation的地圖和位置

  1. <section> 
  2. <p>This is the geolocation example map.</p> 
  3. <div id="map_canvas" ></div> 
  4.  
  5. <p>This is the output from the navigator.geolocation object.</p> 
  6. <table> 
  7. <tr> 
  8. <td>accuracy:</td> 
  9. <td>< span id="accuracyOutput"></span></td> 
  10. </tr> 
  11. <tr> 
  12. <td>altitude:< /td> 
  13. <td><span id="altitudeOutput"></span></td> 
  14. </tr> 
  15. <tr> 
  16. <td>altitudeAccuracy:</td> 
  17. <td>< span id="altitudeAccuracyOutput"></span></td> 
  18. </tr> 
  19. <tr> 
  20. <td>heading:</td> 
  21. <td><span id="headingOutput"></span></td> 
  22. </tr> 
  23. <tr> 
  24. <td>latitude:</td> 
  25. <td><span id="latitudeOutput"></span></td> 
  26. </tr> 
  27. <tr> 
  28. <td>longitude:</td> 
  29. <td><span id="longitudeOutput"></span></td> 
  30. </tr> 
  31. <tr> 
  32. <td>speed:</td> 
  33. <td><span id="speedOutput"></span></td> 
  34. </tr> 
  35. </table> 
  36. </section> 
  37. <aside> 
  38. <p>This is the Web Worker. </p> 
  39. <p>Prime number calculation result:  
  40. <output id="result"></output></p> 

Web Worker計算素數,<output>這一新的標簽被用來顯示web worker提供的計算結果,<output>標簽中的ID與JavaScript用來標識其要執行的計算的ID是相同的。在<span>和<output>標簽中用到的ID使得它們在DOM中是可訪問的,沒有引用ID的話,JavaScript就不知道要使用哪一個<span>和<output>。清單4給出了web worker的輸出。

清單4. web worker的輸出

  1. <aside> 
  2. <p>This is the Web Worker. </p> 
  3. <p>Prime number calculation result:  
  4. <output id="result"></output></p> 

<input>中用到的onClick首先顯示由素數(Prime Number)web worker計算出來的值,而第二個onClick則是被用來停止web worker的。清單5給出了代碼。在按鈕被點擊時,displayWorker()函數引發顯示web worker計算出來的結果。web worker在頁面載入后開始計算素數。

清單5. web worker的input標簽

  1. <input type="button" value="Display Web Worker" onClick="displayWorker();"> 
  2. <input type="button" value="Stop Web Worker" onClick="stopWorker();"> 
  3.  
  4. </aside> 
  5. </body> 
  6. </html>  

#p#

JavaScript文件

JavaScript是例子頁面上展示的API背后的引擎,Geolocation API是通過調用initGeoApp()函數來初始化的,這就是由< body>標簽中的onLoad()事件來執行的函數:其決定了你的瀏覽器是否能夠使用地理位置數據(參見清單6)。如果你的瀏覽器可以使用地理位置數據的話,則Geolocation API就會被調用。如果調用成功的話,就會使用Position中的屬性值來繪制地圖,然后屬性的值會接在地圖的后面打印出來。

清單6. Geolocation的函數

  1. function initGeoApp()  
  2. {  
  3. if( navigator.geolocation )  
  4. {   
  5. navigator.geolocation.getCurrentPosition( success, failure);  
  6. }  
  7. else  
  8. {  
  9. alert("Your browser does not support geolocation services.");  
  10. }  

基于你在HTML文件中提供的ID,document.getElementById被用來檢索值。document.getElementById是文檔對象的一個方法,應該通過使用document.getElementById來訪問,如清單7所示。Position的屬性值存放在這里,這樣它們就能夠用來在要渲染的地圖下面打印屬性。

清單7. 使用getElementById來獲取coords的值

  1. var map;  
  2. function success(position)  
  3. {  
  4. document.getElementById("accuracyOutput").innerHTML =   
  5. position.coords.accuracy;  
  6. document.getElementById("altitudeOutput").innerHTML =   
  7. position.coords.aktitude;  
  8. document.getElementById("altitudeAccuracyOutput").innerHTML =   
  9. position.coords.altitudeAccuracy;  
  10. document.getElementById("headingOutput").innerHTML =   
  11. position.coords.heading;  
  12. document.getElementById("latitudeOutput").innerHTML =   
  13. position.coords.latitude;  
  14. document.getElementById("longitudeOutput").innerHTML =   
  15. position.coords.longitude;  
  16. document.getElementById("speedOutput").innerHTML =   
  17. position.coords.speed; 

接下來的這部分定義的是Google Map API的LatLng對象的坐標,如清單8所示。Google Map API LatLng對象提供了需要用來創建地圖的坐標信息,你可以設置縮放級別和其他的幾個選項,這些選項創建了呈現給用戶的地圖的外觀。

清單8. Google Map的選項

  1. var coordinates = new google.maps.LatLng(position.coords.latitude,   
  2. position.coords.longitude);  
  3.  
  4. var myOptions =  
  5. {  
  6. zoom: 14,  
  7. center: coordinates,  
  8. mapTypeControl: false,  
  9. navigationControlOptions: {style: google.maps.NavigationControlStyle.small},  
  10. mapTypeId: google.maps.MapTypeId.ROADMAP   
  11. }; 

注意一下mapTypeID這一選項,該選項選擇的是ROADMAP,該值所呈現的地圖的樣子如圖2所示。該選項有四個可選的值:

1. ROADMAP

2. HYBRID

3. SATELLITE

4. TERRAIN

圖3給出了選擇HYBRID選項時網頁看起來的樣子。

圖3. 使用混合式地圖的API網頁。

HTML 5


map_canvas這一ID被用來創建地圖,該ID是HTML文件中的< div>的ID。

map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
在地圖上放一個初始位置的標記,清單9給出了這一代碼。

清單9. 放置一個初始的地圖標記

  1. var marker = new google.maps.Marker({  
  2. position: coordinates,  
  3. map: map,  
  4. title: "You are here."  
  5. });  
  6. }  
  7.  
  8. function failure()  
  9. {  
  10. alert("Sorry, could not obtain location");  

web worker在頁面初始化之后就開始執行。如果用戶想要顯示所執行的計算的輸出的話,他/她可以點擊Display Web Worker按鈕,這將會調用displayWorker()函數。清單10給出了它的代碼。

清單10. web worker

  1. var worker = new Worker('PrimeNumberWebWorker.js');  
  2. function displayWorker()   
  3. {  
  4. worker.onmessage = function (event)   
  5. {   
  6. document.getElementById('result').innerHTML = event.data;  
  7. };  

如果用戶想要停止web worker的話,他/她可以點擊Stop Web Worker按鈕,這會調用清單11中給出的stopWorker()函數。

清單11. 終止worker

  1. function stopWorker()   
  2. {  
  3. worker.terminate();  

web worker文件

該文件是素數計算器的web worker,其計算出每個素數直到被終止執行。清單12給出了它的代碼。

清單12. 計算素數

  1. var n = 1;  
  2. search: while (true) {  
  3. n += 1;  
  4. for (var i = 2; i <= Math.sqrt(n); i += 1)  
  5. if (n % i == 0)  
  6. continue search;  
  7. postMessage(n);  
  8. }  

CSS3文件

清單13中給出的CSS3文件提供了HTML5頁面中顯示的格式。

清單13. CSS3描述

  1. * {font-family: Arial,Helvetica,sans-serif ;  
  2. }  
  3.  
  4. body {  
  5. margin: 0 300px 0 300px;  
  6. color: #990000;  
  7. background-color:#FFFFCC;  
  8. }  
  9.  
  10. header > hgroup h1 {  
  11. margin: 0 0 3px 0;  
  12. padding: 0;  
  13. text-align: center;  
  14. font-size: 30px;  
  15. }  
  16.  
  17.  
  18. header > hgroup h2 {  
  19. margin: 0 0 15px 0;  
  20. padding: 0;  
  21. text-align: center;  
  22. font-style: italic;  
  23. font-size: 12px;  
  24. }  
  25.  
  26.  
  27. header p {  
  28. margin: 0 0 20px 0 ;  
  29. padding: 0;  
  30. text-align: center;  
  31. font-size: 12px;  
  32. }  
  33.  
  34. aside {  
  35. width: 200px;  
  36. height: 175px;  
  37. margin: -450px 0 0 450px;  
  38. background-color: #990000;  
  39. padding: .5px 0 0 10px ;   
  40. color:#FFFFFF;  
  41. font-weight:bold;  
  42. }  
  43.  
  44. div {  
  45. width: 400px;   
  46. height: 250px;   


結論

文章系列的這一部分內容研究了Geolocation和Web Worker API的實用性。選擇這兩個API是因為把它們放在一起既說明了API使用的創新性又說明了實際上的可用性。對于HTML5規范在創建新的業務模型方面的使用來說,Geolocation是一個很好的例子。同樣,Web Worker的角色是JavaScript的并發性所固有的一些問題的解決方案。

這兩個API共同說明了一種用于商業和社會的HTML5使用模式的組合,因此,它們的功效說明了HTML5富互聯網應用的特有便利性和一般管理手段。

下載

Example HTML, CSS3 and JavaScript files HTML5APIs.zip

原文:http://article.yeeyan.org/view/213582/205776

【編輯推薦】

  1. 29個非常實用的HTML 5實例、教程和技巧
  2. HTML 5怎么就成了RIA“殺手”?
  3. HTML 5來襲:Web前端開發面臨十字路口
  4. HTML 5離線存儲之Web SQL
  5. HTML 5可以做五件事情 超出你的想象
責任編輯:陳貽新 來源: 譯言網
相關推薦

2011-05-13 17:36:05

HTML

2012-03-07 10:04:11

HTML 5

2013-01-18 10:59:44

IBMdW

2010-09-03 08:58:01

HTML 5

2014-10-21 17:34:11

HTML5移動設計

2011-04-11 10:14:47

HTML 5

2017-08-09 15:57:11

JavaScriptHtml5音頻

2014-08-28 10:16:17

HTML5

2012-05-02 10:28:16

HTML5

2012-05-23 13:00:37

HTML5

2011-08-09 09:06:43

HTML 5

2013-01-04 13:39:51

2013-01-24 10:26:04

HTML5HTML 5HTML5的未來

2011-07-18 14:54:55

HTML 5

2012-02-23 10:32:19

HTML 5

2011-11-23 09:11:36

API

2011-04-02 09:25:43

HTML 5

2011-06-07 15:14:09

HTML 5

2011-09-14 14:25:00

HTML 5

2011-06-15 09:38:56

HTML 5
點贊
收藏

51CTO技術棧公眾號

亚洲成人黄色av| 欧美黄网站在线观看| 午夜精品久久久久久久91蜜桃| 国产真实久久| 亚洲欧洲国产伦综合| 天天操,天天操| 成人女同在线观看| 久久久亚洲综合| 444亚洲人体| 国产午夜免费福利| 综合久久亚洲| 亚洲欧洲午夜一线一品| 色婷婷狠狠18禁久久| 午夜欧美巨大性欧美巨大 | 狠狠爱一区二区三区| 伊人久久中文字幕| 亚洲欧洲一区| 久久亚洲私人国产精品va| 国产在线观看无码免费视频| 99精品国产九九国产精品| 狠狠躁夜夜躁久久躁别揉| 在线国产精品网| 国产主播福利在线| av一本久道久久综合久久鬼色| 国产精品香蕉在线观看| 亚洲欧美综合另类| 亚洲一级影院| 欧美精品午夜视频| 国产又粗又猛又爽又黄的视频四季| 国产精品久av福利在线观看| 欧美一区二区三区影视| 久久精品影视大全| 精品3atv在线视频| 疯狂蹂躏欧美一区二区精品| 亚洲高潮无码久久| 色影视在线观看| 中文久久乱码一区二区| 欧美极品一区| 亚洲日本在线播放| av资源网一区| 国产精品一区在线观看| 亚洲第一黄色片| 国产精品一级片在线观看| 国产精品电影观看| 国产亚洲久一区二区| 久久精品国语| 热久久免费视频精品| 在线观看中文字幕视频| 亚洲日本激情| 97成人超碰免| 精品人妻一区二区色欲产成人| 中日韩视频在线观看| 97婷婷大伊香蕉精品视频| 国产污视频在线观看| 在线播放一区| 97av在线视频| 亚洲精品久久久久久久蜜桃| 日韩中文字幕一区二区三区| 国产精品99久久久久久www| 69亚洲精品久久久蜜桃小说| 丝袜a∨在线一区二区三区不卡| 日本精品免费一区二区三区| 精品无码一区二区三区的天堂| 久久一区亚洲| 国产精品视频一区二区高潮| 97超碰人人模人人人爽人人爱| 精品一区二区免费在线观看| 亚洲qvod图片区电影| 国产99久久九九精品无码免费| 国产精品中文字幕一区二区三区| www.久久久| 涩涩视频在线观看免费| 国产女同互慰高潮91漫画| 亚洲日本精品一区| 1区2区在线观看| 图片区小说区区亚洲影院| 黄www在线观看| 99欧美精品| 91精品国产美女浴室洗澡无遮挡| 在线中文字日产幕| 亚洲va久久| 久久激情五月丁香伊人| 国产在线欧美在线| 久久久久久婷| 91免费福利视频| 无码国产精品高潮久久99| 欧美极品美女视频| 激情六月天婷婷| 国产伦子伦对白在线播放观看| 91久久国产综合久久| 一二三级黄色片| 欧美国产不卡| 日日骚久久av| 中文字幕在线观看免费视频| 欧美aaaaaa午夜精品| 不卡视频一区| jizz在线观看中文| 亚洲一区二区三区四区在线免费观看| 欧美综合在线观看视频| www.久久99| 亚洲女成人图区| 欧美黑人一级片| 日韩福利电影在线观看| 成人动漫视频在线观看免费| 福利视频在线播放| 亚洲国产你懂的| 中文字幕线观看| 亚洲伊人春色| 欧美极品少妇与黑人| 中文字幕一区二区三区四区欧美| 国产v综合v亚洲欧| 一区二区三区四区视频在线观看| 美女的胸无遮挡在线观看| 91精品国产综合久久久蜜臀粉嫩 | 日本wwww视频| 视频亚洲一区二区| 日韩在线观看免费高清完整版| 国产精品久久久免费视频| 国产在线一区观看| 新呦u视频一区二区| 天天综合av| 精品国产百合女同互慰| 免费在线观看黄色小视频| 日韩激情一二三区| 久久久久久草| 理论片午夜视频在线观看| 日韩丝袜美女视频| 午夜精品福利在线视频| 丝袜美腿亚洲综合| 任我爽在线视频精品一| 婷婷电影在线观看| 亚洲精品videossex少妇| 久久久久久久久久一区二区三区| 久久 天天综合| 亚洲欧美国产一区二区| xxx欧美xxx| 日韩经典中文字幕在线观看| 日本在线观看视频网站| 成人自拍视频在线| 欧美这里只有精品| 91蜜桃臀久久一区二区| 欧美国产日韩一区二区三区| 国产成人a人亚洲精品无码| 中文字幕亚洲精品在线观看| 999精品视频在线| 国产一区网站| 国产精品视频久久久久| aaa在线观看| 欧美精品日日鲁夜夜添| 国产色无码精品视频国产| 国产一区二区三区四区五区入口 | 午夜精品一区二区三区四区| 久久91导航| 国产午夜精品免费一区二区三区 | 911国产精品| 亚洲伦理一区二区三区| 国产精品自拍毛片| 国产欧美日韩网站| 日韩大胆成人| 日本道色综合久久影院| 高清在线观看av| 欧美欧美欧美欧美首页| 日本高清一二三区| 国产a久久麻豆| 日韩中文字幕在线免费| 久草精品在线| 成人黄色生活片| 污视频在线看网站| 日韩av在线免播放器| 国产主播第一页| 国产精品久久久久久久久久久免费看 | 欧美激情成人在线视频| 丰满岳乱妇国产精品一区| 午夜婷婷国产麻豆精品| 麻豆精品免费视频| 激情都市一区二区| 国产精彩视频一区二区| 精品国产123区| 91视频九色网站| 97人人爽人人澡人人精品| 亚洲欧美日韩在线高清直播| 一二三区在线播放| 亚洲va欧美va人人爽| 熟女少妇内射日韩亚洲| 国产精品一区三区| 国内外成人免费激情视频| 青青草国产成人a∨下载安卓| 成人在线一区二区| 午夜久久中文| 欧美www在线| 免费黄色在线视频网站| 91精品久久久久久久99蜜桃 | 网站永久看片免费| www.亚洲色图| 在线能看的av网站| 新狼窝色av性久久久久久| 爱爱爱视频网站| 尤物tv在线精品| 999在线观看免费大全电视剧| 香蕉视频亚洲一级| 久久久久亚洲精品| 69久久久久| 亚洲黄色片网站| 国产视频手机在线观看| 91国偷自产一区二区开放时间| 欧美成人国产精品高潮| 欧美激情一二三区| 国产肉体xxxx裸体784大胆| 国产精品12区| 色天使在线观看| 天堂蜜桃一区二区三区| 99久久国产综合精品五月天喷水| 婷婷综合伊人| 日韩精品伦理第一区| 日本中文字幕在线一区| 99影视tv| 欧美久久一区二区三区| 国产精品视频yy9099| av在线资源| 色综合色综合网色综合| 好操啊在线观看免费视频| 夜夜嗨av一区二区三区免费区| 三级视频在线| 亚洲精品99久久久久| 精品国产无码一区二区| 欧美区视频在线观看| 中文字幕在线2018| 欧美综合久久久| 青青国产在线视频| 91国偷自产一区二区三区成为亚洲经典| 国产成人自拍视频在线| 亚洲一区二区三区爽爽爽爽爽| 97成人资源站| 亚洲精品欧美激情| 国产精品久久久精品四季影院| 国产精品不卡一区| 日本女人性生活视频| 国产精品美女久久久久久久久久久| 91精品人妻一区二区| 26uuu亚洲综合色| 永久免费看mv网站入口78| 97精品国产露脸对白| 欧美大喷水吹潮合集在线观看| 成人激情校园春色| 国产精品久久久久久亚洲色| 成人亚洲一区二区一| 无码av免费精品一区二区三区| 风间由美性色一区二区三区| 韩国av中国字幕| 成人毛片在线观看| 欧美熟妇精品黑人巨大一二三区| 国产特黄在线| 亚洲欧美偷拍自拍| 精品国产乱码久久久久久久软件 | 日韩限制级电影在线观看| 91麻豆视频在线观看| 56国语精品自产拍在线观看| 99国产在线播放| 精品sm捆绑视频| 台湾av在线二三区观看| 亚洲视频日韩精品| 日本综合在线| 欧美激情一区二区三区成人| 亚洲美女久久精品| 国产精品欧美一区二区| 亚洲国产一区二区久久| 成人三级在线| 国产伦精品一区二区三区千人斩| 亚洲高清精品中出| 午夜久久黄色| 超碰97人人射妻| 蜜臀av性久久久久蜜臀aⅴ| 黑人性生活视频| 国产精品一区二区在线看| 一起草在线视频| 欧美经典一区二区三区| 免费日韩在线视频| 日韩欧美亚洲国产一区| 国产又粗又猛又爽| 精品国产91九色蝌蚪| 黑人与亚洲人色ⅹvideos| 日韩在线不卡视频| 国产蜜臀av在线播放| 日韩免费在线播放| 久久69av| 日本一区二区三区免费看 | 久久久999免费视频| 日本最新不卡在线| 美国黄色一级视频| 国产欧美一区二区三区沐欲| 黄色在线观看免费| 在线观看网站黄不卡| 国产91免费在线观看| 尤物九九久久国产精品的分类| 午夜小视频福利在线观看| 人妖精品videosex性欧美| 日韩成人精品| 亚洲天堂电影网| 一本久久知道综合久久| 成人亚洲免费视频| 久久人人97超碰com| 国产女人18水真多毛片18精品| 欧美色xxxx| 性中国古装videossex| 中文字幕在线国产精品| www.超碰在线| 97欧洲一区二区精品免费| av在线不卡顿| 91专区在线观看| 国产成人在线免费观看| 亚洲精品自拍视频在线观看| 欧美性少妇18aaaa视频| 高清一区二区三区四区| 久久九九免费视频| а√天堂资源国产精品| 开心色怡人综合网站| 国自产拍偷拍福利精品免费一| 亚洲欧美日韩一级| 久久精品一区二区三区不卡牛牛| 久久亚洲成人av| 欧美一级xxx| 国产理论在线观看| 国产一区红桃视频| 成人久久一区| 国产精品入口免费软件| 久久久久国产精品麻豆ai换脸 | 一本久道久久综合婷婷鲸鱼| 亚洲欧洲日韩综合| 亚洲免费成人av| 国产人妻精品一区二区三| www高清在线视频日韩欧美| 国产第一精品| 午夜精品视频在线观看一区二区| 久久久精品网| 在线免费看黄视频| 91久久一区二区| 国产一级二级三级在线观看| 欧美专区中文字幕| 亚洲激情播播| 欧美日韩亚洲一二三| 久久综合九色综合97婷婷| 欧美在线观看不卡| 亚洲小视频在线| 欧美xnxx| 中文字幕日韩精品久久| 黄页视频在线91| av激情在线观看| 欧美xxxx在线观看| wwww在线观看免费视频| 国产精品一区二区三区不卡 | 成人h视频在线观看播放| 欧美丰满老妇| 超碰在线免费av| 一区二区三区四区不卡视频| 高清一区二区三区四区| 98精品国产自产在线观看| 九九热爱视频精品视频| 国产精品拍拍拍| 亚洲欧美在线视频观看| 精品乱子伦一区二区| 久久免费视频观看| 国产欧美日韩精品一区二区免费| 免费看污污网站| 亚洲天堂久久久久久久| 欧美熟女一区二区| 日韩美女在线播放| 日韩精品影视| 性生交大片免费看l| 狠狠躁夜夜躁人人爽超碰91| 国产粉嫩一区二区三区在线观看 | 8050国产精品久久久久久| 国产a久久精品一区二区三区| 色免费在线视频| 亚洲精品少妇30p| 日本成人一区| 成人情趣片在线观看免费| 欧美体内she精视频在线观看| 国产传媒第一页| 欧美日韩不卡一区二区| 国产精品一区hongkong| 欧洲亚洲一区| 福利一区福利二区| 波多野结衣电车| 九九热视频这里只有精品| 美女久久久久| 一级黄色免费毛片| 色悠久久久久综合欧美99| 蜜芽在线免费观看| 九色综合日本| 狠狠色丁香九九婷婷综合五月| 日本三级免费看| 日韩天堂在线视频| 日韩伦理一区二区三区| 男人的天堂最新网址| 精品高清美女精品国产区| 欧美日韩在线资源| 欧美lavv| 成人小视频在线| 在线观看免费视频一区| 欧美亚洲国产日韩2020|