久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

淺談JavaScript中如何操作光標(biāo)和選區(qū)?

JavaScript中如何操作光標(biāo)和選區(qū)?下面本篇文章帶大家了解一下 Selection 對象和 Range 對象,介紹一下怎么借助這兩個對象來操作光標(biāo)和選區(qū)。

淺談JavaScript中如何操作光標(biāo)和選區(qū)?

在一些業(yè)務(wù)場景,比如高亮文本、輸入編輯、等場景中需要對光標(biāo)和選區(qū)進(jìn)行操作時,可以使用瀏覽器提供的 Selection 對象和 Range 對象來操作光標(biāo)和選區(qū)。

Selection 對象

Selection 對象表示用戶選擇的選區(qū)或插入符號的當(dāng)前位置,它可能橫跨多個元素。

//獲取 Selection 對象 window.getSelection();

用戶可能從左到右(與文檔方向相同)選擇文本或從右到左(與文檔方向相反)選擇文本。

anchor (錨點): 指用戶開始選擇的地方。
focus (焦點): 指用戶結(jié)束選擇的地方。

如果你使用鼠標(biāo)選擇文本的話,anchor 就指你按下鼠標(biāo)鍵的地方,而 focus 就指你松開鼠標(biāo)鍵的地方。anchorfocus 的概念不能與選區(qū)的起始位置和終止位置混淆,因為 anchor 可能在 focus 的前面,也可能在 focus 的后面,這取決于你選擇文本時鼠標(biāo)移動的方向,也就是按下鼠標(biāo)鍵和松開鼠標(biāo)鍵的位置。

如下圖所示:

淺談JavaScript中如何操作光標(biāo)和選區(qū)?

淺談JavaScript中如何操作光標(biāo)和選區(qū)?

屬性:

  • anchorNode: 錨點(anchor)所在節(jié)點。
  • anchorOffset:

    • 如果 anchorNode 是文本節(jié)點、注釋節(jié)點,返回錨點(anchor)到該節(jié)點中第一個字的字符個數(shù)。
    • 如果 anchorNode 是元素節(jié)點,返回錨點(anchor)之前的同級節(jié)點總數(shù)。
  • focusNode: 焦點(focus)所在節(jié)點。
  • focusOffset:

    • 如果 focusNode 是文本節(jié)點、注釋節(jié)點,返回焦點(focus)到該節(jié)點中的第一個字的字符個數(shù)。
    • 如果 focusNode 是元素節(jié)點,返回焦點(focus)之前的同級節(jié)點總數(shù)。
  • isCollapsed: 表示選區(qū)的起始位置和終止位置是否重合的 Boolean 值,如果為 true,可以認(rèn)為當(dāng)前沒有內(nèi)容選中。
  • rangeCount: 選區(qū)中包含的 Range 對象數(shù)量。
  • type: 描述當(dāng)前選區(qū)的類型,有以下三個值:

    • None: 當(dāng)前沒有選擇。
    • Caret: 僅單擊,但未選擇,選區(qū)已折疊(即光標(biāo)在字符之間,并未處于選中狀態(tài))。
    • Range: 選擇的是一個范圍。

注意:

以上所有屬性都是只讀屬性

方法:

  • addRange(range)

    向選區(qū)(Selection 對象)中添加一個區(qū)域( Range 對象)。

    參數(shù):

    range: 一個區(qū)域?qū)ο?/p>

    示例:

    <p id="text">文本</p>
    //添加一個選區(qū) var text = document.querySelector("#text"); var selObj = window.getSelection(); var rangeObj = document.createRange(); rangeObj.selectNode(text); selObj.addRange(rangeObj);
  • collapse(parentNode,offset)

    收起當(dāng)前選區(qū)到一個點。文檔不會發(fā)生改變。

    參數(shù):

    parentNode: 光標(biāo)落在的目標(biāo)節(jié)點
    offset: 可選,在目標(biāo)節(jié)點內(nèi)的偏移量

    示例:

    <div contenteditable="true" id="text">文本</div>
    //收起選區(qū)到一個點,光標(biāo)落在一個可編輯元素上 var text = document.querySelector("#text") window.getSelection().collapse(text,0);
  • collapseToEnd()

    取消當(dāng)前選區(qū),并把光標(biāo)定位在原選區(qū)的最末尾處。

    參數(shù):

    示例:

    var selObj = window.getSelection(); selObj.collapseToEnd();
  • collapseToStart()

    取消當(dāng)前選區(qū),并把光標(biāo)定位在原選區(qū)的最開始處。

    參數(shù):

    示例:

    var selObj = window.getSelection(); selObj.collapseToStart();
  • containsNode(aNode,aPartlyContained)

    判斷指定的節(jié)點是否包含在 Selection 對象中(即是否被選中)。

    參數(shù):

    aNode: 用于判斷是否包含在 Selection 對象中的節(jié)點。
    aPartlyContained
    當(dāng)此參數(shù)為 true 時,Selection 對象包含 aNode 的一部分或全部時,containsNode() 方法返回true
    當(dāng)此參數(shù)為 false (默認(rèn)值)時,只有 Selection 對象完全包含 aNode 時,containsNode() 方法才返回 true

    示例:

    <div id="text">文本</div>
    var text = document.querySelector("#text"); var selObj = window.getSelection(); var contains = selObj.containsNode(text);
  • deleteFromDocument()

    DOM 中刪除選中的文檔片段。

    參數(shù):

    示例:

    var selObj = window.getSelection(); selObj.deleteFromDocument();
  • extend(node,offset)

    移動選區(qū)的焦點(focus)到指定的點。選區(qū)的錨點(anchor)不會移動。選區(qū)將從錨點(anchor)開始到新的焦點(focus),不管方向。

    參數(shù):

    node: 焦點(focus)會被移至此節(jié)點內(nèi)。
    offset: 可選,默認(rèn)值為0,焦點(focus)會被移至 node 內(nèi)的偏移位置。

    示例:

    <div id="text">文本</div>
    var text = document.querySelector("#text"); var selObj = window.getSelection(); selObj.extend(text);
  • getRangeAt(index)

    返回一個當(dāng)前選區(qū)包含的 Range 對象。

    參數(shù):

    index: 該參數(shù)指定 Range 對象的索引。如果該數(shù)值大于或等于 rangeCount ,將會報錯。

    示例:

    //獲取一個 Selection 對象 var selObj = window.getSelection(); //獲取一個 Range 對象 var rangeObj  = selObj.getRangeAt(0);
  • modify(alter,direction,granularity)

    通過文本命令來更改當(dāng)前選區(qū)或光標(biāo)位置。

    參數(shù):

    alter:改變類型,傳入 move 來移動光標(biāo)位置,或者 extend 來擴(kuò)展當(dāng)前選區(qū)。
    direction:調(diào)整選區(qū)的方向。你可以傳入 forwardbackward 來根據(jù)選區(qū)內(nèi)容的語言書寫方向來調(diào)整。或者使用 leftright 來指明一個明確的調(diào)整方向。
    granularity:調(diào)整的距離顆粒度。可選值有 characterwordsentencelineparagraphlineboundarysentenceboundaryparagraphboundarydocumentboundary

    示例:

    var selection = window.getSelection(); selection.modify("extend", "forward", "word");
  • removeAllRanges()

    會從當(dāng)前 Selection 對象中移除所有的 Range 對象,取消所有的選擇。

    參數(shù):

    示例:

    var selObj = window.getSelection(); selObj.removeAllRanges();
  • removeRange(range)

    將一個 Range 對象從選區(qū)中移除。

    參數(shù):

    range: 一個將從選區(qū)中移除的 Range 對象。

    示例:

    var selObj = window.getSelection(); var rangeObj = selObj.getRangeAt(0) selObj.removeRange(rangeObj);
  • selectAllChildren(parentNode)

    把指定元素的所有子元素設(shè)置為選區(qū)(該元素本身除外),并取消之前的選區(qū)。

    參數(shù):

    parentNode: 指定元素

    示例:

    <div id="selectAll">   <div>文本1</div>   <div>文本2</div> </div>
    var selectAll = document.querySelector("#selectAll"); var selObj = window.getSelection(); selObj.selectAllChildren(selectAll);
  • setBaseAndExtent(anchorNode,anchorOffset,focusNode,focusOffset)

    選中兩個特定 DOM 節(jié)點之間的內(nèi)容。

    參數(shù):

    anchorNode: 選中內(nèi)容的開始節(jié)點
    anchorOffset:選區(qū)起始位置在 anchorNode 內(nèi)的偏移量。
    如果 anchorNode 是文本節(jié)點,表示選區(qū)起始位置在該節(jié)點第幾個字符位置。
    如果 anchorNode 是元素節(jié)點,表示選區(qū)起始位置在該節(jié)點內(nèi)第幾個子節(jié)點的位置。
    focusNode: 選中內(nèi)容的結(jié)束節(jié)點
    focusOffset: 選區(qū)終止位置在 focusNode 內(nèi)的偏移量。
    如果 focusNode 是文本節(jié)點,表示選區(qū)終止位置在該節(jié)點第幾個字符位置。
    如果 focusNode 是元素節(jié)點,表示選區(qū)終止位置在該節(jié)點內(nèi)第幾個子節(jié)點的位置。

示例:

<div id="start"></div> <div id="end"></div>
var start = document.querySelector("#start"); var end = document.querySelector("#end"); var selObj = window.getSelection(); selObj.setBaseAndExtent(start,0,end,0);
  • toString()

    返回代表當(dāng)前 Selection 對象的字符串,例如當(dāng)前選擇的文本。

    參數(shù):

    示例:

    var selObj = window.getSelection(); selObj.toString();

Range 對象

Range 對象表示被選中的文檔片段。一個 Range 對象可能包含整個元素節(jié)點,也可能包含元素節(jié)點的一部分,例如文本節(jié)點的一部分文字。用戶通常只能選擇一個 Range 對象,但是有的時候用戶也有可能選擇多個 Range 對象(只有火狐瀏覽器可以選擇多個 Range 對象)。

可以用 Document 對象的 Document.createRange 方法創(chuàng)建 Range,也可以用 Selection 對象的 getRangeAt 方法獲取 Range。另外,還可以通過 Document 對象的構(gòu)造函數(shù) Range() 來得到 Range

屬性:

  • collapsed: 返回一個表示起始位置和終止位置是否相同的 Boolean 值。
  • commonAncestorContainer: 返回包含 startContainerendContainer 的最深一級的節(jié)點。
  • endContainer: 返回包含 Range 終點位置的節(jié)點。
  • endOffset:

    • 如果 endContainer 是文本節(jié)點、注釋節(jié)點,返回該節(jié)點第一個字到選區(qū)邊界的字符個數(shù)(即被選中的字符個數(shù))。
    • 如果 endContainer 是元素節(jié)點,返回選區(qū)終止位置之后第一個節(jié)點之前的同級節(jié)點總數(shù)。
  • startContainer: 返回包含 Range 開始位置的節(jié)點。
  • startOffset:

    • 如果 startContainer 是文本節(jié)點、注釋節(jié)點,返回該節(jié)點第一個字到選區(qū)邊界的字符個數(shù)(即未被選中的字符個數(shù))。
    • 如果 startContainer 是元素節(jié)點,返回選區(qū)起始位置第一個節(jié)點之前的同級節(jié)點總數(shù)。

注意:

以上所有屬性都是只讀屬性

方法:

  • cloneContents()

    返回一個文檔片段,它是 Range 對象中所有節(jié)點的副本。

    參數(shù):

    示例:

    // 在文檔中插入選中元素 var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); documentFragment = rangeObj.cloneContents(); document.body.appendChild(documentFragment);
  • cloneRange()

    返回一個 Range 對象的副本(兩個對象各自做出改變,都不會影響另一方)。

    參數(shù):

    示例:

    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); clone = rangeObj.cloneRange();
  • collapse(toStart)

    向開始或結(jié)束方向折疊 Range

    參數(shù):

    toStart: 可選,Boolean 值(默認(rèn)值 false), true 折疊到 Range 的開始方向,false 折疊到結(jié)束方向。

    示例:

    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); rangeObj.collapse(true);
  • compareBoundaryPoints(how, sourceRange)

    比較兩個 Range 對象的起始位置節(jié)點或結(jié)束位置節(jié)點。

    參數(shù):

    how 表示比較方法的常量:

      Range.END_TO_END :比較 sourceRange 對象的結(jié)束位置節(jié)點和原 Range 對象的結(jié)束位置節(jié)點。   Range.END_TO_START :比較 sourceRange 對象的結(jié)束位置節(jié)點和原 Range 對象的起始位置節(jié)點。   Range.START_TO_END :比較 sourceRange 對象的起始位置節(jié)點和原 Range 對象的結(jié)束位置節(jié)點。   Range.START_TO_START :比較 sourceRange 對象的起始位置節(jié)點和原 Range 對象的起始位置節(jié)點。

    sourceRange: 一個與原 Range 對象比較的 Range 對象。

    返回值

    compare 表示一個數(shù)字:

      -1 :原 Range 對象的比較節(jié)點在 sourceRange 對象的比較節(jié)點之前     0 :原 Range 對象的比較節(jié)點在 sourceRange 對象的比較節(jié)點的相同位置      1 :原 Range 對象的比較節(jié)點在 sourceRange 對象的比較節(jié)點之后

    示例:

    <div id="range">range</div> <div id="sourceRange">sourceRange</div>
    var range, sourceRange, compare; range = document.createRange(); range.selectNode(document.querySelector("#rang")); sourceRange = document.createRange(); sourceRange.selectNode(document.querySelector("#sourceRange")); compare = range.compareBoundaryPoints(Range.START_TO_END, sourceRange);
  • comparePoint(referenceNode,offset)

    判斷指定節(jié)點是在 Range 對象的之前、相同還是之后位置。

    參數(shù):

    referenceNode: 與 Range 對象進(jìn)行比較的節(jié)點。
    offset: 在 referenceNode 內(nèi)的偏移量。
    如果 referenceNode 是文本節(jié)點、注釋節(jié)點,offset 表示在該節(jié)點中字符的偏移位置。
    如果 referenceNode 是元素節(jié)點,offset 表示在該節(jié)點中子元素的偏移位置。

    示例:

    <div id="range">range</div> <div id="referenceNode">referenceNode</div>
    range = document.createRange(); range.selectNode(document.querySelector("#range")); returnValue = range.comparePoint(document.querySelector("#referenceNode"), 0);
  • createContextualFragment(tagString)

    HTML 字符串轉(zhuǎn)換為文檔片段

    參數(shù):

    tagString: 要轉(zhuǎn)換的 HTML 字符串。

    示例:

    var tagString = "<div>node</div>"; var range = document.createRange(); var documentFragment = range.createContextualFragment(tagString); document.body.appendChild(documentFragment);
  • deleteContents()

    DOM 中刪除選中的文檔片段,不返回刪除的文檔片段。

    參數(shù):

    示例:

    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); rangeObj.deleteContents();
  • extractContents()

    DOM 中刪除選中的文檔片段,返回刪除的文檔片段(不保留 DOM 事件)。

    參數(shù):

    示例:

    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); rangeObj.extractContents();
  • getBoundingClientRect()

    返回一個 DOMRect 對象,表示整個選區(qū)的位置信息。

    參數(shù):

    示例:

    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); var boundingRect = rangeObj.getBoundingClientRect();
  • getClientRects()

    返回一個選區(qū)內(nèi)所有元素調(diào)用 Element.getClientRects() 方法所得結(jié)果的列表。表示選區(qū)在屏幕上所占的區(qū)域。

    參數(shù):

    示例:

    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); var boundingRect = rangeObj.getClientRects();
  • insertNode(newNode)

    在選區(qū)開始處插入一個節(jié)點。

    參數(shù):

    newNode: 需要插入的節(jié)點

    示例:

    <div id="insertNode">insertNode</div> <div id="node">node</div>
    range = document.createRange(); newNode = document.querySelector("#node"); range.selectNode(document.querySelector("#insertNode")); range.insertNode(newNode);
  • intersectsNode(referenceNode)

    返回一個 Boolean 值,判斷指定節(jié)點和 Range 對象是否相交。

    參數(shù):

    referenceNode:需要比較的節(jié)點

    示例:

    <div id="referenceNode">referenceNode</div>
    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); referenceNode = document.querySelector("#referenceNode"); rangeObj.intersectsNode(referenceNode);
  • isPointInRange(referenceNode,offset)

    返回一個 Boolean 值,判斷指定節(jié)點是否在 Range 對象內(nèi)。

    參數(shù):

    referenceNode:指定節(jié)點
    offset:在 referenceNode 內(nèi)的偏移量。
    如果 referenceNode 是文本節(jié)點,offset 表示在該節(jié)點中字符的偏移位置。
    如果 referenceNode 是元素節(jié)點,offset 表示在該節(jié)點中子元素的偏移位置。

    示例:

    <div id="referenceNode">referenceNode</div>
    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); referenceNode = document.querySelector("#referenceNode"); rangeObj.isPointInRange(referenceNode,0);
  • selectNode(referenceNode)

    將指定節(jié)點包含在 Range 對象內(nèi)。

    參數(shù):

    referenceNode:指定節(jié)點

    示例:

    <div id="referenceNode">referenceNode</div>
    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); referenceNode = document.querySelector("#referenceNode"); rangeObj.selectNode(referenceNode);
  • selectNodeContents(referenceNode)

    將指定節(jié)點的內(nèi)容包含在 Range 對象內(nèi)。

    參數(shù):

    referenceNode:指定節(jié)點

    示例:

    <div id="referenceNode">referenceNode</div>
    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); referenceNode = document.querySelector("#referenceNode"); rangeObj.selectNodeContents(referenceNode);
  • setEnd(endNode,endOffset)

    設(shè)置選區(qū)的終止位置。

    參數(shù):

    endNode:終止位置所在的節(jié)點
    endOffset:在 endNode 內(nèi)的偏移量。
    如果 endNode 是文本節(jié)點、注釋節(jié)點,endOffset 表示在該節(jié)點中字符的偏移位置。
    如果 endNode 是元素節(jié)點,endOffset 表示在該節(jié)點中子元素的偏移位置。

    示例:

    <div id="endNode">endNode</div>
    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); var endNode = document.querySelector("#endNode"); rangeObj.setEnd(endNode,0)
  • setEndAfter(referenceNode)

    設(shè)置選區(qū)的結(jié)束位置在指定節(jié)點之后。

    參數(shù):

    referenceNode:指定節(jié)點

    示例:

    <div id="referenceNode">referenceNode</div>
    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); var referenceNode = document.querySelector("#referenceNode"); rangeObj.setEndAfter(referenceNode)
  • setEndBefore(referenceNode)

    設(shè)置選區(qū)的結(jié)束位置在指定節(jié)點之前。

    參數(shù):

    referenceNode:指定節(jié)點

    示例:

    <div id="referenceNode">referenceNode</div>
    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); var referenceNode = document.querySelector("#referenceNode"); rangeObj.setEndBefore(referenceNode)
  • setStart(startNode,startOffset)

    設(shè)置選區(qū)的起始位置。

    參數(shù):

    startNode:起始位置所在的節(jié)點
    startOffset:在 startNode 內(nèi)的偏移量。
    如果 startNode 是文本節(jié)點、注釋節(jié)點,startOffset 表示在該節(jié)點中字符的偏移位置。
    如果 startNode 是元素節(jié)點,startOffset 表示在該節(jié)點中子元素的偏移位置。

    示例:

    <p id="startNode">startNode</p>
    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); startNode = document.querySelector("#startNode"); rangeObj.setStart(startNode,0)
  • setStartAfter(referenceNode)

    設(shè)置選區(qū)的起始位置在指定節(jié)點之后。

    參數(shù):

    referenceNode:指定節(jié)點

    示例:

    <div id="startNode">startNode</div>
    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); referenceNode = document.querySelector("#referenceNode"); rangeObj.setStartAfter(referenceNode)
  • setStartBefore(referenceNode)

    設(shè)置選區(qū)的起始位置在指定節(jié)點之前。

    參數(shù):

    referenceNode:指定節(jié)點

    示例:

    <div id="referenceNode">referenceNode</div>
    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); referenceNode = document.querySelector("#referenceNode"); rangeObj.setStartBefore(referenceNode)
  • surroundContents(newParent)

    把指定節(jié)點插入選區(qū)的起始位置,然后把指定節(jié)點的內(nèi)容替換為選區(qū)的內(nèi)容。

    參數(shù):

    newParent:指定節(jié)點

    示例:

    <div id="newParent">newParent</div>
    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); newParent = document.querySelector("#newParent"); rangeObj.surroundContents(newParent)
  • toString()

    返回代表當(dāng)前 Range 對象的字符串,例如當(dāng)前選擇的文本。

    參數(shù):

    示例:

    var selObj = window.getSelection(); var rangeObj  = selObj.getRangeAt(0); var rangeStr = rangeObj.toString();

選區(qū)中的多個區(qū)域

一個 Selection 對象表示用戶選擇的區(qū)域(Range 對象)的集合,通常它只包含一個區(qū)域,訪問方式如下:

//獲取一個 Selection 對象 var selObj = window.getSelection(); //獲取一個 Range 對象 var rangeObj  = selObj.getRangeAt(0);

只有火狐瀏覽器實現(xiàn)了多個區(qū)域,如下圖所示:

淺談JavaScript中如何操作光標(biāo)和選區(qū)?

修改選區(qū)樣式

使用 ::selection 選擇器可以匹配被選中的部分。
目前只有一小部分 CSS 屬性可以用于 ::selection 選擇器:

  • color
  • background-color
  • text-shadow

示例

淺談JavaScript中如何操作光標(biāo)和選區(qū)?

示例地址:https://www.kkkk1000.com/images/SelectionRange/selection.html

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
国产精品www994| 国产精品调教| www.com.cn成人| 亚洲精品永久免费视频| 九九九精品视频| 久久只有精品| 日韩中文在线电影| 免费欧美一区| 男人天堂欧美日韩| 午夜国产精品视频免费体验区| 激情综合在线| 亚洲欧美日韩国产| 日韩激情啪啪| 毛片不卡一区二区| 欧洲一区二区三区精品| 免费久久精品| 亚洲一区二区三区四区电影| 亚洲男人在线| 欧美黄色精品| www成人在线视频| 欧美专区在线| 国产欧美69| 欧洲av不卡| 老鸭窝亚洲一区二区三区| 亚洲日本国产| 精品视频99| 极品日韩av| 亚洲精品动态| 久久精品国产免费| 天堂8中文在线最新版在线| 不卡一区综合视频| 青青草伊人久久| 里番精品3d一二三区| 91精品国产乱码久久久久久久| 亚洲欧美视频| 久久av免费看| 国内精品99| 国产亚洲久久| 99久久激情| 亚洲免费福利一区| 国产精品福利在线观看播放| 亚洲黄页一区| 国产精品777777在线播放| 久久久久久免费视频| 日本99精品| 999国产精品| 国产探花一区| 在线亚洲国产精品网站| 国产精品sm| 亚洲激情中文在线| 国产精品久久亚洲不卡| 欧美亚洲国产激情| 国产日韩欧美| 亚洲成人三区| 欧美日韩亚洲一区在线观看| 人人精品亚洲| 国产精品中文| aa国产精品| 福利视频一区| 日韩精品免费一区二区夜夜嗨 | 色综合视频一区二区三区日韩| 精品视频网站| 亚洲开心激情| 欧美色图一区| 国产精品久久久久久av公交车| 国内激情久久| 精品国产网站| 色狠狠一区二区三区| 欧美影院三区| 欧美激情91| 日韩精品成人| 在线视频观看日韩| 精品美女视频 | 久久国产精品毛片| 亚洲涩涩在线| 国产高清日韩| 激情91久久| 中文在线资源| 国产极品嫩模在线观看91精品| 日韩精品一区第一页| 日韩欧美视频专区| 精品一区电影| 欧美久久一区二区三区| 日韩在线观看一区二区| 亚洲福利一区| 欧美少妇精品| 色一区二区三区四区| 国产精品chinese| 四虎在线精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美1级日本1级| 欧美国产一级| 免费日韩成人| 91欧美极品| 日韩在线观看中文字幕| 视频在线观看国产精品| 黑丝一区二区三区| 久久一区二区三区喷水| 91视频一区| 国产在线不卡一区二区三区| 国产精品777777在线播放| 国产日韩视频在线| 久久国内精品| 国产无遮挡裸体免费久久| 日韩欧美四区| 日韩精品久久理论片| 在线看片日韩| 欧美日韩国产一区精品一区| 欧美 日韩 国产一区二区在线视频| 国产一区精品福利| 国产精品视频3p| 久久精品99久久久| 国产精选一区| 欧美韩一区二区| 免费看一区二区三区| 国产精品成人国产| 久久av网站| 久久中文精品| 91欧美国产| 久久久一二三| 亚洲视频综合| 欧美特黄一级大片| 美女毛片一区二区三区四区| 久久精品不卡| 自拍日韩欧美| 爽好多水快深点欧美视频| 日韩中文字幕一区二区三区| 免费成人在线观看| 亚洲精品大片| 国产日韩欧美一区在线| 麻豆免费精品视频| av资源中文在线天堂| 亚洲天堂1区| 夜夜嗨一区二区| 免费在线欧美视频| 日韩黄色免费网站| 国产精久久久| 国产成人精品一区二区三区视频| 免费观看亚洲天堂| 特黄毛片在线观看| 亚洲精品a级片| 亚洲精品日韩久久| 免费观看亚洲天堂| 久久黄色影院| 免费观看在线综合| 国产精品a级| 欧美香蕉视频| 99国产精品久久久久久久成人热| 亚洲欧洲日韩| 开心激情综合| 久久在线免费| 视频一区免费在线观看| 日韩精品亚洲专区| 国产成年精品| 在线亚洲自拍| 国产日韩高清一区二区三区在线| 国产成人久久精品麻豆二区 | 美女久久99| 亚洲高清不卡| 亚洲精品伊人| 国产成人在线中文字幕| 激情综合网站| 国产亚洲高清在线观看| 精品国产三区在线| 免费观看不卡av| 日韩高清不卡在线| 国产精品专区免费| 免费日韩视频| 精品一二三区| 亚洲激情婷婷| 国产精品白丝久久av网站| 亚洲h色精品| 日韩av成人高清| 亚洲精品在线影院| 亚洲精品四区| 精精国产xxxx视频在线播放| 免费成人在线影院| 久久精品国产999大香线蕉| 成人免费电影网址| 日韩综合一区二区三区| 日韩在线免费| 国产亚洲欧美日韩在线观看一区二区| 99精品电影| 国产精品videossex久久发布| 婷婷激情图片久久| 久久精品欧洲| 亚欧洲精品视频在线观看| 亚洲黄色网址| 欧美日韩视频免费看| 欧美 日韩 国产精品免费观看| 久久国产精品色av免费看| 国产专区一区| 久久这里只有精品一区二区| 亚洲一区亚洲| 国产第一亚洲| 日韩精品一区二区三区中文字幕| 在线一区视频观看| 国产精品magnet| 日本大胆欧美人术艺术动态| 国产福利电影在线播放|