欧美精品在线一区二区三区_亚洲女同精品视频_日韩一区免费_国产欧美久久久精品免费_国产这里只有精品_僵尸再翻生在线观看_久久99精品国产一区二区三区_亚洲免费一区二区_女教师淫辱の教室蜜臀av软件_中文字幕国产一区二区

jQuery XML 解析器和搜索機制

2016-10-18    藍藍設計的小編

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

 

介紹

這里所描述的過程將使你能夠創建一個簡單的基于jQuery / XML的解析器和搜索機制。此過程將通過一個AJAX請求檢索XML,然后在jQuery中分析數據,為搜索機制做準備。該解決方案將基于不區分大小寫的全部或部分關鍵字匹配地返回結果。來自于關鍵字搜索的返回結果設置將被格式化為一個直接鏈接到相應網站的超鏈接。jQuery搜索方法非常類似于Mike Endale的一個項目,不過增加了一個DOM解析器,正則表達式以及結果集分組。

背景

客戶端需要一個簡單的搜索工具來查找基于關鍵字搜索的本地內部網站。關鍵字搜索必須不區分大小寫,并允許返回部分匹配的結果。歸咎于客戶端內容管理系統的架構,因此(SharePoint)只能執行客戶端腳本。其解決方案的另一個障礙是,源數據將來自多個源。數據被存儲在多個Excel電子表格,CSV文件和MS Access數據庫內。這就對我們提出了這樣的需要:開發具有一系列查詢和一個宏的Access解決方案,充當可合并、擦洗,并最后格式化數據作為XML輸出的偽ETL。對于這個解決方案的目的,我們將詳細介紹JavaScript XML分析器的設計,而不是偽Access ETL宏工具的設計。

使用代碼

該解決方案的做法是利用一個簡單的基于JavaScript / XML的搜索來發送數據結果到HTML / JavaScript前端。前端將引用腳本:jQuery,XML和CSS文件。XML格式將因為它的可讀性和它是數據交換行業標準格式之一的事實而被使用。 XML數據將通過使用AJAX的客戶端jQuery解析,并通過Internet Explorer 11呈現。

解決方案將使用RegExp對象來處理關鍵字匹配,驗證和特殊字符處理。RegExp對象字符串將檢查危險語法從而提高解決方案的穩定性和整體可用性。

我們將默認使用JavaScript分組功能來返回匹配結果作為折疊的紀錄集。折疊的記錄集線項目將被URL鏈接到相關的Project Workspace網站。在擴展的組記錄集下,結果將存在于相關的子記錄中,當通過On Click事件展開的時候。

信息架構

解析器函數有一個復雜的帶有節點和屬性的層次XML樹,并且將它轉變成等價的JavaScript對象和屬性??蛻舳嘶贘avaScript / XML的搜索需要經過以下步驟:

1.偽ETL工具準備數據到XML文件(本項目不包括這一步驟)

2.此XML文件加載到指定的位置(本項目不包括這一步驟)

3.在點擊事件發生時,JavaScript解析器將使用AJAX方法加載XML數據

4.檢查搜索中關鍵字的存在

  • 如果沒有關鍵字存在拋出錯誤消息“Please enter a search keyword”

5.如果有節點包含URL屬性的字符串,那么節點加入到數組中。

6.RegExp對象關鍵字通過替代匹配特殊字符處理

7.RegExp對象關鍵字匹配轉換為不區分大小寫

8.循環數組匹配基于驗證的RegExp對象

  • 如果沒有結果,那就拋出錯誤消息“No results were found!”

9.用斑馬條紋的奇數和偶數行對組構建結果集

10.用相關的Work Order構建組匹配PPID行作為子組

11.填充結果,然后將它們傳遞到最后呈現的集合

12.顯示具有列和所有分組標題的結果集合

  • 分組在默認情況下折疊

用戶界面

用戶界面是一個簡單的基于HTML / JavaScript客戶端搜索來返回關鍵字匹配結果——默認為折疊和分組的記錄集合。以行項目顯示的折疊紀錄集合直接URL鏈接到相關項目的網站。在擴展組記錄集合下,結果在On Click事件擴大時將保留相關的子記錄。

內嵌頁面引用

我們需要做的第一件事是引用我們的腳本:jQuery,XML和CSS文件。

<link rel="stylesheet" href="path/default.css" /> <script type="text/javascript" src="path/jquery-1.4.2.min.js"></script> <script id="data" type="text/javascript" src="path/search.js" xmlData="data.xml"></script> <input id="term" type="text"/> < input name="Search" id="searchButton" type="button" value="Search"/> <div id="result">< /div>

你會發現我們已經添加了xmlData屬性到search.js引用。這是傳遞來自于HTML文件的XML文件位置的最佳方式。如果你有你有多個項目xml文件想要用作為數據源的話,那么這就很有幫助。

XML數據源

XML數據源可以以任何方式或任何大小來構造;但建議保持源XML文件小于1 MB,以便于保持適當的分析器響應時間。下面是XML源用于此項目的一個例子:

<?xml version="1.0" encoding="UTF-8"?> <dataroot generated="2015-11-20T10:30" xmlns:od="urn:schemas-microsoft-com:officedata"> <etl> <PPID Lead="Slow,Roy" Description="NORTH OF FAIR" PID="P002"> <WO Description="SHELTON - BANK (SAFETY)" PM="Slow,Roy" Status="CLOSED" WID="305577" WOXREF="SHEL" Program="REINFORCEMENT"> </WO> <Archive>Archived</Archive> <record search="P002NORTH OF FAIRSHELSHELTON 305577SHELTON - BANK (SAFETY)Slow,Roy"/> <url address="P002"/> </PPID> </etl> </dataroot>

錯誤處理

對于這個項目,我們已經在兩個關鍵領域使用過錯誤處理。如果沒有關鍵字存在,那么錯誤消息“Please enter a search keyword”將出現。如果沒有個結果生成,則拋出錯誤消息“No results were found!”。

//Check if a keyword exists if (keyword == '') {
      errMsg += 'Please enter a search keyword';
    } else {
      searchThis();
    }
if (i == 0) { pub += '< div>'; pub += 'No results were found!'; pub += '< /div>';

使用jQuery AJAX請求

我們將通過預定義的能在頁面級別啟用的jQuery庫通過異步JavaScript函數調用XML。 AJAX的全稱是“異Asynchronous JavaScript and XML”,由Jesse James Garrett,Adaptive Path的創始人所杜撰。AJAX依賴于XMLHttpRequest,CSS,DOM和其他技術。AJAX的主要特點是它的“異步”性質,這意味著它可以從服務器而無需刷新頁面來發送和接收數據。在異步模式中,客戶端和服務器會獨立地工作,以及獨立地進行通信,從而允許用戶持續與網頁交互,不管服務器上發生了什么。

function searchThis() {
  $.ajax({
    type: "GET",
    url: XMLSource,
    dataType: "xml",
    success: function (xml) {
      loadPublication(xml)
    }
  });
}

使用DOM解析和正則表達式

由于jQuery本身不能解析XML字符串;我們將充分利用瀏覽器的DOM解析方法——大多數瀏覽器以這種或那種形式支持?;鸷?,Chrome,Safari以及的Internet Explorer瀏覽器均支持這種方法,它們都具有DOMParser對象。較早的Internet Explorer瀏覽器(如IE 8)使用其專有的ActiveX對象??梢詣摻鐬g覽器的解決方案,來檢查是否缺少DOMParser,但這超出了這個項目的范圍,但是可能以后在額外的跨瀏覽器支持中會添加。

知道JavaScript RegExp(正則表達式)功能和語法來處理任意特殊字符。同時通過定義正則表達式來忽略大小寫,以便于在關鍵字搜索時更加友好。

function loadPublication(xmlData) {
  i = 0; var row; var searchExp = ""; var ppid = "P";

  $(xmlData).find('PPID').each(function () { // Check if a site URL attr exists if($(this).find('url').attr('address').length) { //Set the search string Variables var record          = $(this).find('record').attr('search'); var archive         = $(this).find('Archive'); //Escape characters in keyword expression and use global match RegExp.escape = function(keyword) { return keyword.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
              }; //Keyword expression will be case agnostic var exp = new RegExp(keyword, "i"); //Use formated keyword as the default search searchExp = record.match(exp); //If the search expression is not null if (searchExp != null) { //Start building the result if ((i % 2) == 0) {
              row = 'even';
              } else {
              row = 'odd';
              } if($(this).attr('PID') != ppid) {
                  ppid = $(this).attr('PID');

                  i++;

分組返回結果

用戶界面是一個簡單的基于HTML / JavaScript客戶端搜索來返回關鍵字匹配結果默認為折疊又分組的記錄集合。以行項目顯示的折疊紀錄集合直接URL鏈接到相關項目的網站。在擴展組記錄集合下,結果在On Click事件擴大時將保留相關的子記錄。

//Grouping of the results function expgroupby(e) {
    docElts=document.all;
    numElts=docElts.length;
    images = e.getElementsByTagName("IMG");
    img=images[0];
    srcPath=img.src;
    index=srcPath.lastIndexOf("/");
    imgName=srcPath.slice(index+1); var b="auto"; if(imgName=="plus.gif"){
        b="";
        img.src="/_layouts/images/minus.gif" }else{
        b="none";
        img.src="/_layouts/images/plus.gif" }
    oldName=img.name;
    img.name=img.alt;
    spanNode=img; while(spanNode!=null){
        spanNode=spanNode.parentNode; if(spanNode!=null&&spanNode.id!=null&&spanNode.id=="wrapper")break } while(spanNode.nextSibling!=null&&spanNode.nextSibling.id!="wrapper"){
        spanNode=spanNode.nextSibling;
        spanNode.style.display=b;
    }
}

完整的源代碼

下面是這個項目完整的源代碼例子。

//Full source $(document).ready(function () { //Global Variables var XMLSource = $('#data').attr('xmlData'); var keyword = ''; var pub = ''; var i = 0;

  $("#searchButton").click(function () {
    keyword = $("input#term").val(); //Reset any message var errMsg = '';
    pub = ''; //Check if a keyword exists if (keyword == '') {
      errMsg += 'Please enter a search keyword';
    } else {
      searchThis();
    } if (errMsg != '') {
      pub += '< div>';
      pub += errMsg;
      pub += '< /div>';
    } //Show error $('#result').html(pub);

  }); //Use enter key to trigger the search query  $("input#term").keypress(function (e) { var key = e.which; if (key == 13){
     $("#searchButton").click(); return false;
    }
  }); function searchThis() {
    $.ajax({
      type: "GET",
      url: XMLSource,
      dataType: "xml",
      success: function (xml) {
        loadPublication(xml)
      }
    });
  } function loadPublication(xmlData) {
    i = 0; var row; var searchExp = ""; var ppid = "P";     

    $(xmlData).find('PPID').each(function () { // Check if a site URL attr exists  if($(this).find('url').attr('address').length) { var record   = $(this).find('record').attr('search'); var archive  = $(this).find('Archive'); //Escape characters in keyword expression and use global match  RegExp.escape = function(keyword) { return keyword.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
                }; //Keyword expression will be case agnostic var exp = new RegExp(keyword, "i"); //Use formated keyword as the default search searchExp = record.match(exp); //If the search expression is not null if (searchExp != null) { //Start building the result if ((i % 2) == 0) {
            row = 'even';
                } else {
            row = 'odd';
                } if($(this).attr('PID') != ppid) {
                    ppid = $(this).attr('PID');

                    i++; //Grouped header row with URL links from the xml attr pub += '< tr id="wrapper"code-string" style="margin: 0px; padding: 0px; border: 0px; color: rgb(128, 0, 128);">'">'   
    + '< td colspan="8">'
    + '< a onclick="javascript:expgroupby(this);return false;" href="javascript:">'
    + '< img name="collapse" alt="expand" src="/_layouts/images/plus.gif" border="0" />< /a>'
    + '< a href="http://project.com/sites/tp/Projects/' + $(this).find('url').attr('address') + '">' + '  ' + $(this).attr('PID')+ ' - ' + $(this).attr('Description') + ' - ' + $(this).attr('Lead') + '< /a>< /td>' + '</tr>';

    } //Bottom grouped expand detail fields pub += '<tr id="item" style="display: none;">' + '< td valign="top">' + $(this).find('WO').attr('WID') + '< /td>' + '< td valign="top">' + $(this).find('WO').attr('Description') + '< /td>' + '< td valign="top">' + $(this).find('WO').attr('PM') + '< /td>' + '< td valign="top">' + $(this).find('WO').attr('Status') + '< /td>' + '< td valign="top">' + $(this).find('WO').attr('WOXREF') + '< /td>' + '< td valign="top">' + $(this).find('WO').attr('Program') + '< /td>' + '< td valign="top">' + $(this).find('Archive').text() + '< /td>' + '< /tr>';           
        }
    }
}); if (i == 0) {
      pub += '< div>';
      pub += 'No results were found!';
      pub += '< /div>'; //Populate the result $('#result').html(pub);
    } else { //Pass the result set showResult(pub);
    }
  } function showResult(resultSet) { //Show the result with the titles of the column fields pub = '< div>There are ' + i + ' results!< /div>';
    pub += '< table id="grid" border="0">';
    pub += '< thead>< tr>< td>< th>PPID - Project Description - Lead PM< /th>< /td>< /tr>';
    pub += '< tr>< th>WO Number< /th>';
    pub += '< th>WO Description< /th>';
    pub += '< th>Project Manager< /th>';
    pub += '< th>Status< /th>';
    pub += '< th>XRef< /th>';
    pub += '< th>Program< /th>';
    pub += '< th>Archive Status< /th>';
    pub += '< /tr>< /thead>';
    pub += '< tbody>';

    pub += resultSet;

    pub += '< /tbody>';
    pub += '< /table>'; //Populate the results $('#result').html(pub)

    $('#grid').tablesorter();
  }
}); //Grouping of the results function expgroupby(e) {
    docElts=document.all;
    numElts=docElts.length;
    images = e.getElementsByTagName("IMG");
    img=images[0];
    srcPath=img.src;
    index=srcPath.lastIndexOf("/");
    imgName=srcPath.slice(index+1); var b="auto"; if(imgName=="plus.gif"){
        b="";
        img.src="/_layouts/images/minus.gif" }else{
        b="none";
        img.src="/_layouts/images/plus.gif" }
    oldName=img.name;
    img.name=img.alt;
    spanNode=img; while(spanNode!=null){
        spanNode=spanNode.parentNode; if(spanNode!=null&&spanNode.id!=null&&spanNode.id=="wrapper")break } while(spanNode.nextSibling!=null&&spanNode.nextSibling.id!="wrapper"){
        spanNode=spanNode.nextSibling;
        spanNode.style.display=b;
    }
}
 
 
 

 藍藍設計www.ocunn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計  cs界面設計 、 ipad界面設計  包裝設計  圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務 

 

日歷

鏈接

個人資料

藍藍設計的小編 http://www.ocunn.cn

存檔

神马久久久久久久| 国产精品一区免费在线观看| 窝窝社区一区二区| 国产精品迅雷| 日本中文在线| 日本一区高清| 日本加勒比一区| 国产情侣小视频| 久久久久久久久久综合| 日韩精品电影一区二区| 五月天丁香花婷婷| 狠狠爱免费视频| 亚洲啊啊啊啊啊| 欧美日韩精品免费观看| 国产精品swag| 91黄色8090| 久久精品国产久精国产一老狼 | 久久综合给合久久狠狠色| 国产精品嫩草视频| 51午夜精品视频| 欧美富婆性猛交| 久久国产精品久久久久久久久久| 制服丝袜亚洲网站| 一区二区成人在线| 国产精品国产自产拍高清av| 久久在线观看免费| thepron国产精品| 国产在线播放一区三区四| 日韩国产在线一| 午夜影院日韩| 一区二区三区成人精品| 国产精品jizz在线观看美国| 天天插综合网| 亚洲成av人电影| 91精品在线观看国产| 精品视频99| 狠狠做深爱婷婷综合一区| 欧美日韩破处| 久久爱www成人| 九九精品在线| 欧美禁忌电影网| 亚洲电影一级片| 国产一区二区三区网| 国产日产一区| 国产精品伦理久久久久久| 久久中文字幕二区| 一区二区国产在线| 韩日视频一区| 99久久夜色精品国产亚洲1000部| 成人三级视频| 国产区精品区| 99久久久久久中文字幕一区| 中文精品久久| 亚洲麻豆视频| 日韩国产精品大片| 久久99精品国产麻豆婷婷| 精品写真视频在线观看| 日日夜夜精品视频天天综合网| 99精品视频免费观看| 久久福利一区| 国产真实乱偷精品视频免| 国产精品影视天天线| 波多野结衣视频一区| 久久精品亚洲一区二区三区浴池| 中文字幕成人av| 亚洲一区二区三区四区五区中文| 婷婷夜色潮精品综合在线| 色哟哟国产精品免费观看| 欧美偷拍一区二区| 亚洲精品一区二区三区香蕉 | 亚洲欧美在线第一页| 中文字幕在线看视频国产欧美在线看完整 | 在线日韩一区二区| 欧美色老头old∨ideo| 69成人精品免费视频| 亚洲国产天堂久久综合网| 亚洲精品国产美女| 中文字幕日韩精品在线| 久久久免费观看视频| 国产精品成熟老女人| 国产欧美一区二区三区另类精品| 先锋影音日韩| 欧美日韩激情视频在线观看| 4438x全国最大成人| 欧美xxxx精品| 亚洲第一精品在线观看 | 日韩精品一级中文字幕精品视频免费观看| 久久精品99久久久| 国产亚洲综合在线| 午夜精品一区二区三区三上悠亚| 欧美日韩精品一区视频| 亚洲欧洲高清在线| 8050国产精品久久久久久| 92福利视频午夜1000合集在线观看| 久久青青草原一区二区| 青青草成人免费在线视频| 日本特黄a级片| 国产伦精品一区二区免费| 麻豆精品一区二区三区视频 | 欧美在线三区| 国产一区91精品张津瑜| 亚洲视频在线观看三级| 制服丝袜亚洲播放| 欧美精品一区二区三区国产精品| 成人免费网视频| 欧美日韩午夜爽爽| 好吊操视频这里只有精品| 午夜少妇久久久久久久久 | 亚洲女同同性videoxma| 成人看片黄a免费看在线| 亚洲一级不卡视频| 亚洲国产精品一区二区久| 午夜精品视频在线| 欧美精品免费观看二区| 成年人黄色片视频| 青青青视频在线播放| 中文无码精品一区二区三区| 日本电影一区二区在线观看| 二吊插入一穴一区二区| 久久成人综合| 白白色亚洲国产精品| 日本精品一区二区三区四区的功能| 亚洲最新中文字幕| 成人av片网址| 欧美大黑帍在线播放| 无码人妻aⅴ一区二区三区玉蒲团| 999精品在线视频| 国产av一区二区三区| 色呦呦在线看| 最新亚洲精品| 国产成人一级电影| 色哟哟欧美精品| 欧美丰满少妇xxxxx| 精品日韩欧美| 99中文字幕在线| 欧美精品一二三四区| 国产综合在线观看| 97久久综合区小说区图片区| 久久视频一区| 亚洲小说欧美激情另类| 色黄久久久久久| 欧美不卡1区2区3区| 午夜视频在线免费看| 无码人妻精品一区二区50| 伊人免费在线| 欧美网色网址| 成人av一区二区三区| 91麻豆精品国产自产在线| 人九九综合九九宗合| 日本手机在线视频| 欧美做受高潮6| 日本毛片在线观看| 日本综合视频| 韩国在线视频一区| 日本一二三四高清不卡| 欧美成人精精品一区二区频| 91精品国产综合久久香蕉最新版 | 农村老熟妇乱子伦视频| 中文字幕在线影院| 久久久久久久久成人| 精品午夜久久福利影院| 欧美美女一区二区| 国产精品一二区| av网站在线不卡| 亚洲综合图片网| 波多野在线观看| 99在线观看免费视频精品观看| 亚洲va韩国va欧美va精品| 午夜精品一区二区三区av| 国产成人永久免费视频| 国产免费嫩草影院| 免费在线看v| 香蕉久久夜色精品国产使用方法 | 亚洲最大av网站| 手机在线播放av| 黄色av一区二区三区| 国产精品日本一区二区不卡视频| 亚洲免费一区二区| 午夜影视日本亚洲欧洲精品| 亚州精品天堂中文字幕| 免费国产黄色网址| www.久久久久久久| 久久久人成影片一区二区三区在哪下载 | zzjj国产精品一区二区| 中文字幕一区二区三区四区五区 | 亚洲欧美国产高清va在线播放| 国产精品一区二区精品| 国产精品一区二区在线播放| 欧美精品一区二区精品网| 久久久久久国产精品免费免费| 精品人妻无码一区二区三区换脸| 丝袜+亚洲+另类+欧美+变态| 午夜a一级毛片亚洲欧洲| 国产欧美日韩综合| 另类天堂视频在线观看| 加勒比成人在线| 国产精品久久久久久久久夜色| 欧美18av| 国产高清精品久久久久| 亚洲视频欧洲视频| 日韩欧美精品在线不卡| jizz中文字幕| 日本在线免费看| 国产一区二区你懂的| 欧美精品欧美精品系列| 成人黄色在线免费观看| 亚洲 小说 欧美 激情 另类| xxxxx日韩| 亚洲美女网站| 日韩一卡二卡三卡| 亚洲自拍三区| 中文天堂在线资源| av综合网站| 亚洲另类春色国产| 国产综合香蕉五月婷在线| 最近中文字幕无免费| 在线观看中文字幕| 在线一区免费| 在线播放91灌醉迷j高跟美女| 久久99精品久久久久久久青青日本 | 久久综合亚洲色hezyo国产| 户外露出一区二区三区| 久久色成人在线| 日本成人精品在线| 中文字幕永久免费| 福利视频在线| 国产乱一区二区| 粗暴蹂躏中文一区二区三区| 最新av免费在线观看| 免费在线黄色电影| 99精品免费视频| 欧美一级久久久| 九一免费在线观看| 亚洲欧美另类综合| 亚洲91视频| 欧美一区二区三区播放老司机| 特级西西444www大精品视频| а中文在线天堂| 国产成人黄色| 欧美日韩国产小视频在线观看| 先锋影音网一区| 亚洲欧美自拍视频| 久久久国产精品入口麻豆| 亚洲激情中文1区| 国产精品一区二区三区在线观| 久久黄色小视频| 成人动态视频| 色婷婷综合激情| 一本—道久久a久久精品蜜桃| 国产美女www爽爽爽视频| 色777狠狠狠综合伊人| 777色狠狠一区二区三区| 欧美日韩亚洲一区二区三区在线观看 | 超碰成人久久| 日韩欧美不卡在线观看视频| 免费看国产曰批40分钟| 一级理论片在线观看| 日韩精品乱码av一区二区| 日韩精品视频免费| 亚洲精品综合在线观看| 性欧美猛交videos| www国产亚洲精品久久麻豆| 国产欧美在线视频| 日韩av在线播| 欧美裸体在线版观看完整版| 精品久久国产字幕高潮| 日本不卡一区二区在线观看| 黄视频网站在线看| 国产日产欧美一区二区三区| 91久久精品一区二区别| 337p粉嫩色噜噜噜大肥臀| 亚洲一区二区日韩| 这里只有精品在线播放| 麻豆精品国产传媒av| 视频在线日韩| 精品久久久视频| 国产毛片久久久久久国产毛片| 一个人免费观看视频www在线播放| 精品一区二区三区香蕉蜜桃| 午夜精品蜜臀一区二区三区免费 | 911亚洲精选| 日本韩国欧美| 精品女厕一区二区三区| 成人精品视频在线播放| 丝袜视频国产在线播放| 99精品视频在线播放观看| 亚洲free嫩bbb| 7777久久亚洲中文字幕| 亚洲一区二区成人| 国外成人免费在线播放| 久久久久黄色片| 日韩一区二区在线免费| 亚洲视频视频在线| 日本一级免费视频| 久久99国产精品久久99大师| 精品美女一区二区| 国模私拍视频在线观看| 欧洲一区二区三区| 亚洲一卡二卡三卡四卡无卡久久| a级黄色片免费| 亚洲伦理在线| 91蜜桃网址入口| 日韩精品一区二区三区色偷偷| 美国成人av| 99久久精品免费观看| 国内一区二区在线视频观看 | 国产日韩av在线| 亚洲视频一区二区三区四区| 日韩精品乱码免费| 91精品久久久久久久久不口人| 中文字幕视频一区二区| 日本视频一区二区| 91精品在线看| 肥臀熟女一区二区三区| 国产乱国产乱300精品| 国产精品国产精品国产专区不卡| 少妇高潮久久久| 国产成人午夜视频| 亚洲自拍小视频免费观看| 国产精品玖玖玖| 在线亚洲免费| 国产精品网站视频| 国产欧美综合视频| 国产成人在线网站| 久久精品丝袜高跟鞋| 欧美一区二区视频| 国产精品福利一区| 国产96在线 | 亚洲| 在线观看网站免费入口在线观看国内 | 欧美日韩国产综合新一区| 亚洲精品高清无码视频| 韩国精品视频在线观看| 亚洲福利视频专区| 开心激情五月网| 欧美成人一品| 国产精品久久久久久久久久免费| 亚洲欧美偷拍一区| 亚洲一区区二区| 91在线视频导航| 在线免费看污| 亚洲女性喷水在线观看一区| 97在线播放视频| 成人自拍视频| 日韩中文字幕免费| 日本视频www| 国内精品免费**视频| 久久精品一二三区| 欧美三级黄网| 欧美视频中文字幕| 91精品国产自产| 中文字幕av亚洲精品一部二部| 国产91色在线|| 五月婷婷狠狠干| 亚洲精品中文在线| 四季av一区二区| 粉嫩一区二区三区四区公司1| 亚洲精品狠狠操| 国产超碰人人爽人人做人人爱| 日本亚洲三级在线| 日本精品一区二区| 都市激情综合| 精品久久久av| 黄色aaa大片| 欧美日韩国产精品一区| 30一40一50老女人毛片| 国产欧美大片| 亚洲午夜精品久久久中文影院av| 成人福利一区二区| 不卡av电影院| 中文字幕免费在线观看| 色欲综合视频天天天| 国产精品理论在线| 久久草av在线| 国产美女网站在线观看| 亚洲成aⅴ人片久久青草影院| 国产精品美女久久| 老司机午夜在线| 亚洲人在线视频| а√中文在线资源库| 姬川优奈aav一区二区| 美国黄色片视频| 成人h动漫精品| 91 视频免费观看| 亚洲日本成人| 奇米777四色影视在线看| 精品自拍偷拍| 999在线免费观看视频| 黄在线观看免费网站ktv| 日韩在线观看免费高清| 色佬视频在线观看| 欧美一级淫片007| 一区二区视频免费| 精品福利免费观看| 久久高清无码视频| 欧美国产精品劲爆| 在线免费观看日韩av| 风间由美性色一区二区三区| 亚洲欧美日韩三级| 日韩国产成人精品| 116极品美女午夜一级|