国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

JSBridge原理解析—以WebviewJavascriptBridge實現方式為例

共 17185字,需瀏覽 35分鐘

 ·

2021-06-26 06:06

一、什么是 JSBridge?

JSBridge 是一種 webview 側和 native 側進行通信的手段,webview 可以通過 jsb 調用 native 的能力,native 也可以通過 jsb 在 webview 上執(zhí)行一些邏輯。

二、JSB 的實現方式

在比較流行的 JSBridge 中,主要是通過攔截 URL 請求來達到 native 端和 webview 端相互通信的效果的。

這里我們以比較火的 WebviewJavascriptBridge 為例,來解析一下它的實現方式。

源碼地址:https://github.com/marcuswestin/WebViewJavascriptBridge

2-1、在 native 端和 webview 端注冊 Bridge

注冊的時候,需要在 webview 側和 native 側分別注冊 bridge,其實就是用一個對象把所有函數儲存起來。

function registerHandler(handlerName, handler{
    messageHandlers[handlerName] = handler;
}
- (void)registerHandler:(NSString *)handlerName handler:(WVJBHandler)handler {
    _base.messageHandlers[handlerName] = [handler copy];
}

2-2、在 webview 里面注入初始化代碼

function setupWebViewJavascriptBridge(callback{
       if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }
       if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
       window.WVJBCallbacks = [callback];
       var WVJBIframe = document.createElement('iframe');
       WVJBIframe.style.display = 'none';
       WVJBIframe.src = 'https://__bridge_loaded__';
       document.documentElement.appendChild(WVJBIframe);
       setTimeout(function(document.documentElement.removeChild(WVJBIframe) }, 0)
}

這段代碼主要做了以下幾件事:

(1)創(chuàng)建一個名為 WVJBCallbacks 的數組,將傳入的 callback 參數放到數組內

(2)創(chuàng)建一個 iframe,設置不可見,設置 src 為https://__bridge_loaded__

(3)設置定時器移除這個 iframe

2-3、在 native 端監(jiān)聽 URL 請求

iOS 中有兩種 webview,一種是 UIWebview,另一種是 WKWebview,這里以 WKWebview 為例:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
    if (webView != _webView) { return; }

    __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate;
    if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:decidePolicyForNavigationResponse:decisionHandler:)]) {
        [strongDelegate webView:webView decidePolicyForNavigationResponse:navigationResponse decisionHandler:decisionHandler];
    }
    else {
        decisionHandler(WKNavigationResponsePolicyAllow);
    }
}

這段代碼主要做了以下幾件事:

(1)攔截了所有的 URL 請求并拿到 url

(2)首先判斷isWebViewJavascriptBridgeURL,判斷這個 url 是不是 webview 的 iframe 觸發(fā)的,具體可以通過 host 去判斷。

(3)繼續(xù)判斷,如果是isBridgeLoadedURL,那么會執(zhí)行injectJavascriptFile方法,會向 webview 中再次注入一些邏輯,其中最重要的邏輯就是,在 window 對象上掛載一些全局變量和WebViewJavascriptBridge屬性,具體值如下:

window.WebViewJavascriptBridge = {
        registerHandler: registerHandler,
        callHandler: callHandler,
        disableJavscriptAlertBoxSafetyTimeout: disableJavscriptAlertBoxSafetyTimeout,
        _fetchQueue: _fetchQueue,
        _handleMessageFromObjC: _handleMessageFromObjC
};

var sendMessageQueue = [];
var messageHandlers = {};

var responseCallbacks = {};
var uniqueId = 1;

(4)繼續(xù)判斷,如果是 isQueueMessageURL,那么這就是個處理消息的回調,需要執(zhí)行一些消息處理的方法(第四步會詳細講)

2-4、webview 調用 native 能力

當 native 和 webview 都注冊好了 Bridge 之后,雙方就可以互相調用了,這里先介紹 webview 調用 native 能力的過程。

2-4-1、webview 側 callHandler

當 webview 調用 native 時,會調用 callHandler 方法,這個方法具體邏輯如下:

bridge.callHandler('ObjC Echo', {'key':'value'}, function responseCallback(responseData{
       console.log("JS received response:", responseData)
})

function callHandler(handlerName, data, responseCallback{
        if (arguments.length == 2 && typeof data == 'function') {
                responseCallback = data;
                data = null;
         }
        _doSend({ handlerName:handlerName, data:data }, responseCallback);
}

function _doSend(message, responseCallback{
        if (responseCallback) {
               var callbackId = 'cb_'+(uniqueId++)+'_'+new Date().getTime();
               responseCallbacks[callbackId] = responseCallback;
               message['callbackId'] = callbackId;
         }
         sendMessageQueue.push(message);
         messagingIframe.src = CUSTOM_PROTOCOL_SCHEME + '://' + QUEUE_HAS_MESSAGE;
}

實際上就是先生成一個 message,然后 push 到 sendMessageQueue 里,然后更改 iframe 的 src。

2-4-2、native 側 flushMessageQueue

然后,當 native 端檢測到 iframe src 的變化時,會走到 isQueueMessageURL 的判斷邏輯,然后執(zhí)行 WKFlushMessageQueue 函數,獲取到 JS 側的 sendMessageQueue 中的所有 message。

- (void)WKFlushMessageQueue {
    [_webView evaluateJavaScript:[_base webViewJavascriptFetchQueyCommand] completionHandler:^(NSString* result, NSError* error) {
        if (error != nil) {
            NSLog(@"WebViewJavascriptBridge: WARNING: Error when trying to fetch data from WKWebView: %@", error);
        }
        [_base flushMessageQueue:result];
    }];
}

- (void)flushMessageQueue:(NSString *)messageQueueString{
    if (messageQueueString == nil || messageQueueString.length == 0) {
        NSLog(@"WebViewJavascriptBridge: WARNING: ObjC got nil while fetching the message queue JSON from webview. This can happen if the WebViewJavascriptBridge JS is not currently present in the webview, e.g if the webview just loaded a new page.");
        return;
    }

    id messages = [self _deserializeMessageJSON:messageQueueString];
    for (WVJBMessage* message in messages) {
        if (![message isKindOfClass:[WVJBMessage class]]) {
            NSLog(@"WebViewJavascriptBridge: WARNING: Invalid %@ received: %@", [message class], message);
            continue;
        }
        [self _log:@"RCVD" json:message];

        NSString* responseId = message[@"responseId"];
        if (responseId) {
            WVJBResponseCallback responseCallback = _responseCallbacks[responseId];
            responseCallback(message[@"responseData"]);
            [self.responseCallbacks removeObjectForKey:responseId];
        } else {
            WVJBResponseCallback responseCallback = NULL;
            NSString* callbackId = message[@"callbackId"];
            if (callbackId) {
                responseCallback = ^(id responseData) {
                    if (responseData == nil) {
                        responseData = [NSNull null];
                    }

                    WVJBMessage* msg = @{ @"responseId":callbackId, @"responseData":responseData };
                    [self _queueMessage:msg];
                };
            } else {
                responseCallback = ^(id ignoreResponseData) {
                    // Do nothing
                };
            }

            WVJBHandler handler = self.messageHandlers[message[@"handlerName"]];

            if (!handler) {
                NSLog(@"WVJBNoHandlerException, No handler for message from JS: %@", message);
                continue;
            }

            handler(message[@"data"], responseCallback);
        }
    }
}

當一個 message 結構存在 responseId 的時候說明這個 message 是執(zhí)行 bridge 后傳回的。取不到 responseId 說明是第一次調用 bridge 傳過來的,這個時候會生成一個返回給調用方的 message,其 reponseId 是傳過來的 message 的 callbackId,當 native 執(zhí)行 responseCallback 時,會觸發(fā)_dispatchMessage 方法執(zhí)行 webview 環(huán)境的的 js 邏輯,將生成的包含 responseId 的 message 返回給 webview。

2-4-3、webview 側 handleMessageFromObjC

function _handleMessageFromObjC(messageJSON{
    _dispatchMessageFromObjC(messageJSON);
}

function _dispatchMessageFromObjC(messageJSON{
       if (dispatchMessagesWithTimeoutSafety) {
             setTimeout(_doDispatchMessageFromObjC);
 } else {
             _doDispatchMessageFromObjC();
 }

 function _doDispatchMessageFromObjC({
        var message = JSON.parse(messageJSON);
        var messageHandler;
        var responseCallback;
        if (message.responseId) {
                responseCallback = responseCallbacks[message.responseId];
                if (!responseCallback) {
                          return;
                }
                responseCallback(message.responseData);
                delete responseCallbacks[message.responseId];
         } else {
               if (message.callbackId) {
                       var callbackResponseId = message.callbackId;
                       responseCallback = function(responseData{
                             _doSend({ handlerName:message.handlerName, responseId:callbackResponseId, responseData:responseData });
                        };
                }

                var handler = messageHandlers[message.handlerName];
                if (!handler) {
                        console.log("WebViewJavascriptBridge: WARNING: no handler for message from ObjC:", message);
                } else {
                        handler(message.data, responseCallback);
                }
          }
     }
}

如果從 native 獲取到的 message 中有 responseId,說明這個 message 是 JS 調 Native 之后回調接收的 message,所以從一開始 sendData 中添加的 responseCallbacks 中根據 responseId(一開始存的時候是用的 callbackId,兩個值是相同的)取出這個回調函數并執(zhí)行,這樣就完成了一次 JS 調用 Native 的流程。

2-4-4、過程總結

過程如下圖

1、native 端注冊 jsb

2、webview 側創(chuàng)建 iframe,設置 src 為__bridge_load__

3、native 端捕獲請求,注入 jsb 初始化代碼,在 window 上掛載相關對象和方法

4、webview 側調用callHandler方法,并在responseCallback上添加callbackId: responseCallback,并修改 iframe 的 src,觸發(fā)捕獲

5、native 收到 message,生成一個responseCallback,并執(zhí)行 native 側注冊好的方法

6、native 執(zhí)行完畢后,通過 webview 執(zhí)行_handleMessageFromObjC方法,取出 callback 函數,并執(zhí)行

2-5、native 調用 webview 能力

native 調用 webview 注冊的 jsb 的邏輯是相似的,不過就不是通過觸發(fā) iframe 的 src 觸發(fā)執(zhí)行的了,因為 Native 可以自己主動調用 JS 側的方法。其具體過程如下圖:

1、native 側調用callHandler方法,并在responseCallback上添加callbackId: responseCallback

2、native 側主動調用_handleMessageFromObjC方法,在 webview 中執(zhí)行對應的邏輯

3、webview 側執(zhí)行結束后,生成帶有responseId的 message,添加到sendMessageQueue中,并修改 iframe 的 src 為__wvjb_queue_message__

4、native 端攔截到 url 變化,調用 webview 的邏輯獲取到 message,拿到responseId,并執(zhí)行對應的 callback 函數

點個『在看』支持下 
瀏覽 53
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 亚洲操操操操| 成人女人18女人毛片| 三根一起进菊眼| 国产AV一卡| 日本一级婬片A片AAA毛多多| 超碰在线网站| 亚洲三级在线免费观看| 奶头和荫蒂添的好舒服囗交漫画| 怡春院在线| 国产精品天天狠天天看| 能看的操逼网站| 美女天天操| 怮交小拗女小嫩苞视频| 欧美成人电影在线观看| 俺来俺去www色婷婷| 国产AV三级片| 天天日天天添| 中文字幕五码| 91在线看18| 亚洲人妻中文字幕| 极品人妻疯狂3p超刺激| 大香蕉伊人婷婷| 色五月亚洲| 丁香婷婷五月| 超碰人人草| 成人午夜在线视频| 国产农村乱婬片A片AAA图片| 欧美屄视频| 成人视频免费在线观看| AV网站在线播放| 免费国产黄色视频| 婷婷日逼| 国产91一区在线精品| 日韩国产在线| 91在线精品一区二区| 九色PORNY蝌蚪视频| 欧美日韩一道本| 黑种人配中国少妇HD| 性色aV中文字幕| 国产丨熟女丨国产熟女视频| 欧美成人午夜福利| 色诱AV| 国产日B| 日韩中文无码一级A片| 蜜桃秘一二三区最新| 国产一级a爱做片免费☆观看| 高清无码视频18| 俺也要操| 先锋av资源在线| 高清色色女网站| 日韩成人影片| 国产精品久久久久久久久久久久久久 | 91丨豆花丨国产极品| 啪啪啪免费网站| 欧美成在线| 青春草在线视频观看| 无码伊人| 西西444WWW无码大胆知乎| 国产精品国产三级国产| 黄色性爱网址| 亚洲高清福利| 国产精品乱伦| 欧美激情一区二区三区| 日本丰满老熟妇乱子伦| 色婷婷AV一区二区三区之e本道| 无码福利导航| 国产美女在线播放| 婷婷丁香色五月| 少妇做爱特级AAA| 在线中文AV| 日本熟妇HD| 三级片AAA成人免费| 亚洲欧洲在线视频| 日韩精品网| 日本欧美在线观看| 亚洲精品成AV人片天堂无码| 日韩无码中文字幕视频| 亚洲无码高清在线视频| 日韩欧美成人网| 激情中文网| 中文字幕++中文字幕明步| 中文视频在线观看| 97精品在线| 国产黄色小电影| 欧美精品一级片| 色婷五月| 婷婷五月天啪啪| 一级A毛片| 丁香激情视频| 久久久久久成人无码| 欧美韩日高清精彩视频| 久久国产V一级毛多内射| 精品无码人妻| 国产免费一区二区三区最新不卡| 亚洲无码在| 农村乱子伦毛片国产乱| 97人妻一区二区三区| 奇米一区| 亚洲av无码乱码| 色操网| 东方av在线播放| 成人黄色无码视频| 成人色色| 天堂网av2014| 五月天一区二区三区| 猛男大粗猛爽H男人味| 俄罗斯老熟妇与子伦| 日本视频在线免费| 7777精品伊人久久7777| 色哟哟一区二区三区四区| 久久精品水多多www| 四川少妇BBB凸凸凸BBB安慰我 | 二区三区不卡| 最近中文字幕2022在线观看A| 五月天干美女| 国产骚逼| 俺来也操逼| 三级乱伦86丝袜无码| 九七影院第二页| 美妇肥臀一区二区三区-久久99精品国 | 热无码av| 夜色福利在线看| 97桃色| 超碰自拍99| 中文字幕人成人乱| 日韩成人性爱网站| 黄色电影地址| 欧美性猛交ⅩXXX乱大交| 人妻无码人妻| 豆花视频在线免费观看| 香蕉午夜视频| 国产三级一区二区| 特级444www| 高清无码一级片| 欧洲无码精品| 久久一二三| 在线观看免费一区| 精品无码人妻一区二区三区| 免费久草视频| 猫咪AV大香蕉| 青娱乐伊人| 人人妻人人爱人人操| 97成人在线| 亚洲AV毛片| 国产白丝在线观看| 先锋影音在线资源| 日韩性爱视频| 操一操| 欧美午夜精品久久久| 天堂在线视频免费| 日韩欧美黄色片| 亚洲无码免费在线视频| 精品热99| 青青草在线观看视频| 日本黄色色情视频| 色五月在线视频| 狠狠躁18三区二区一区免费人| 永久免费av| 真实野外打野视频| 黄色视频亚洲| 色婷婷色| 国产AV一区二区三区| 91麻豆免费看| 大香焦草久| 天天欧美| 国产精品秘国产精品88| 91亚洲免费视频| 污污污污污www网站免费观看| 中文字幕在线国产| AV网站在线播放| 中文字幕1区| 一区二区三区无码视频| 骚逼视频聊天记录| 日操操| 一级a一级a爰片免费免免在线 | 亚洲精品乱码久久久久久蜜桃欧美| 亚洲日韩网站| 国产精品久久久久无码AV| 91色逼| 中国无码视频| 军人妓女院BD高清片在线播放| 日本三级无码| 中文字幕不卡AV在线观看| 3D精品啪啪一区二区免费| 天天看天天色| 中文字幕乱码中文乱码91| 韩国无码一区| 综合成人| 日本一级婬片A片AAA毛多多| 日韩中字无码黄片| 粉嫩小泬BBBB免费看| 日本中文字幕精品| 四虎成人电影| 搡bbb| 大香蕉视频网| 免费黄色AV| 精品国产一区二区三区性色AV| 高清无码一区二区在线| yjizz视频网| 天天日天天操天天摸天天干天日射天天插 | 97香蕉久久国产超碰青草专区| 亚洲国产高清视频| 天天日毛片| 国产精品免费人成网站酒店 | 91视频福利网| 日韩无码视频一区二区| 亚洲AV无码精品久久一区二区| 麻豆AV在线观看| 国产中文字幕在线播放| 精品无码一| 91偷拍与自偷拍精品无码| 国产aaaaaa| 国产日韩欧美在线播放| 日本草逼| 88海外华人免费一区| 日韩在线视频二区| 九九韩剧网最新电视剧免费观看| 91色在线| 日韩综合色| 91一区| 亚洲人妻电影一区| 一区二区三区Av| 天堂网AV在线| 亚洲AV无码免费| 乱伦91| 国产淫乱视频| 自拍天堂| 能看的AV网站| 91视频播放| 日韩天堂av| 超碰在线观看免费版| www.18av| 麻豆网站| 日日夜夜老司机| aaa精品| 91视频在| www.国产在线| gogogo高清在线观看免费直播中国 | 国产三级在线观看| 欧美性受XXXX黑人XYX性爽一 | 久久久久免费| 黄色三级视频在线观看| 呦呦av| 福利一区在线观看| 国产日韩在线视频| 被黑人猛躁4O次高潮| 亚洲中文免费| 国产36页| 亚洲AV成人片无码网站网蜜柚 | 亚欧成人网站| 欧美、日韩、中文、制服、人妻| 亚洲中文自拍| 337P粉嫩大胆噜噜噜55569| 韩国无码一区| 色婷婷久久综合久色| 2025天天操夜夜操| 四川BBB搡BBB爽爽爽电影| 成人特级毛片全部免费播放 | WWWA级片| 亚州视频在线| 熟女网址| 蜜桃网站视频| 中文久久久| 中文无码电影| 91三级片| 青春草在线视频免费观看| av在线中文| 大香蕉三级片| 亚洲成人在线视频观看| 五月天精品视频| 丁香成人五月天| 欧美男女日逼视频| 91大奶熟女| 欧美午夜三级| 亚洲中文字幕在线播放| av影音先锋在线| 欧美婷婷综合| 毛片久久| 亚洲视频欧洲视频| 亚洲AV永久无码成人| 干欧美| 一级大黄色毛片| 色射爱| 欧美一级婬片AAAA毛片| 人妻人人操| 99精品网站| 东北老女人操逼视频| 日韩欧美不卡| 五月天国产视频| 欧美日韩大片| 青青av| 91人妻一区二区三区| 夜夜操夜夜骑| 亚洲性网| 一级片操逼| www男人天堂| 在线观看A片| 国产精品视频色| 亚洲中文字幕高清| 中文字幕免费久久| 亚洲成人777| 麻豆人妻| 色五月天导航| 操逼视频免费网站| 成年人在线观看| 免费视频爱爱| 亚洲一区AV| 无码人妻丰满熟妇精品区| 北条麻妃AV在线播放| 亚洲自拍偷拍视频| 人人草在线| 色欲一区二区| 一线av| 国产中文字幕免费| 狠狠干狠狠撸| 欧美爱爱试看| 在线内射| 91麻豆精品| 一级a一级a免费观看免免黄‘/| 91含羞草www·Com| 99久久婷婷国产综合精品青牛牛| 日本中文字幕亚洲| 3级毛片| 一级无码免费| 免费黄色视频大全| 九九热精品视频99| 欧美口爆视频| 胖老板办公室沙发无套爆秘书| 国内精品久久久久久久久久| 操逼一区二区| 成人婷婷网| 亚洲日韩影院| 色丁香六月| 黄色电影网站在线观看| 亚洲第一网无码性色| 国产久久久久久久久| 成人黄色电影在线观看| 日韩综合区| 人妻一区| 特级西西444www高清大胆免费看| 一级黄色网| xiuxiuav| 超碰97av| 天天操天天操| 色吊丝中文字幕| 久久黄色片| 免费播放黄色成人片| 少妇熟女网| 日本www视频| 无码白浆| 久久久久三级| 国产亚洲精品码| 成人AV在线看| 亚洲码无| 人人操在线公开| 日本在线无码| AV黄片| 国产中文自拍| 国产一级二级三级| 亚洲二区视频| 免费在线观看A片| 亚洲一区二区免费视频| 蜜桃视频无码| 婷婷中文字幕亚洲| 老欧性老太色HD大全| 亚洲天堂三级片| 四川少扫搡BBw搡BBBB| 一区二区av在线| 操啊操| 91网站观看| www.国产在线观看| 中文字幕在线观看网| 色婷婷影院| 四虎无码视频| 操逼大香蕉| 先锋AV资源在线| 久久成人精品视频| 悠悠色导航| 午夜无码在线| 日韩操逼AV| 国产三级自拍视频| 中文亚洲视频| 久久激情网| 免费视频在线观看一区| 狼友视频在线观看18| 在线播放www| 国产福利视频在线观看| 91麻豆精品无码| 你懂的在线视频| 免费看毛片网站| 中文字幕乱码免费综合久久| wwwa片| 无码不卡视频在线观看| 91原创视频| 91国产精品视频在线| 91蝌蚪在线观看| 香蕉av在线播放| 国产毛片一区二区| 51精品国产午夜福利| 琪琪色视频| 亚洲高清无码在线| 国产九九在线视频| 鸡巴操骚逼视频| 免费无码成人| 亚洲成人无码av| 欧美肏屄网| 日韩肏屄视频| 豆花视频在线播放| 日逼图| 狠狠干2025| 日韩中文字幕视频| 猫咪AV大香蕉| 欧美熟女一区二区| 六月婷婷久久| 99热99re6国产线播放| 天天插天天插| 亚洲无码内射| 一区二区三区四区五区六区高清无吗视频| 日韩欧美手机在线| 影音先锋AV资源网站| 久草资源网| 操屄视频免费观看| 亚洲天堂在线视频观看| 老太色HD色老太HD-百度 | 日本中文字幕乱伦| 天天操夜夜操狠狠操| 亚洲精品成人AV| 亚洲日本中文字幕| 初尝人妻滑进去了莹莹视频| 人妻少妇中文字幕久久牛牛| 色图欧美色图| 激情白浆| 成年人视频网站| 五月丁香狠狠爱| 西西西444www无码视频| 伊人久久大香线蕉av一区| 高潮91PORN蝌蚪九色| 亚洲狠狠操| 中文字幕av免费观看| 亚洲乱码国产乱码精品天美传媒 | 日韩欧美一级视频| 无码视频免费播放| 欧美综合激情| 国产激情在线| 国内成人自拍| 日逼A片| 黄色香蕉视频| 中文字幕片av| 亚洲无码成人在线观看| 91视频在线免费观看app| 欧美综合国产| 欧美啪啪网站| 強暴人妻一区二区三区| 加勒比在线| 国产精品扒开腿做爽爽爽视频| 欧美黄色大香蕉| 久久久久免费| 国产一级二级片| 国产高清秘成人久久| 女人18片毛片60分钟黃菲菲| 天天日天天综合| 黄色片在线免费观看| 人人香蕉| 西西888WWW大胆视频| 婷婷五月色| 久久新视频| 国产av影音| 亚洲天堂一区| 欧一美一色一伦一A片| 五月一区| 中文字幕色| 亚洲色图另类| 特级特黄AAAA免费看| 68久久久| 靠逼久久| 人人干视频| 国产精品久久久无码专区| 口爆av| 一级a性色毛片| 91人妻日韩人妻无码专区精品 | 欧美成人视频大全| 中文字幕视频在线播放| 久草视频这里只有精品| 亚洲91黄色片| 免费V片| 色欲五月天| 影音先锋女人资源| 日本无码嫩草一区二区| 亚洲秘一区二区三区-精品亚洲二区-| 伊人久久大香蕉国产| 黄色视频免费在线观看| 综合国产| 激情丁香五月婷婷| 激情亚洲五月天| 狠狠狠狠狠狠| 久久一区二区三区四区五区| 成人黄色在线看| 91精东传媒果冻传媒| 黄色成人网站在线播放| 99国产免费| 天天天做夜夜夜夜爽无码| 麻豆人妻| 麻豆日韩| 波多野吉衣av| 美女大吊,网站视频| 99久视频| 国产高潮白浆喷| 91视频美女| 黄色视频在线免费看| 日本黄色视频网址| 国产精品高潮呻吟| 婷婷爱五月天| 四川少妇BBw搡BBBB槡BBBB| A级毛片在线观看| 天堂aaa| 韩日午夜| 精品福利在线观看| www.激情五月天| 亚洲天堂影音先锋| 中文字幕精品一区久久久久| 成人午夜福利| 高清日韩无码视频| 精品国产天线2024| 色婷婷中文在线| 欧美日韩视频| 亚洲天堂无码在线观看| 亚洲乱伦电影| 在线播放91灌醉迷J高跟美女| 最新免费毛片| 中文字字幕在线中文乱码| 色汉综合| 一级少女免费播放电视剧韩剧TV| 国产精品3| 麻豆久久| 黄色国产av| 亚洲在线网站| chinese高潮老女人| 人妻无码蜜桃视频| 三级片大香蕉| 欧美日韩中文字幕| 亚洲视频欧美视频| 在线a视频免费观看| 久久久www| 91国产爽黄在线相亲| 中文在线高清字幕| 欧美日韩亚洲综合| 日韩加勒比在线| 自拍无码视频| 97一区二区| 国产精品国产三级国产专业不| 日本在线无码| 欧美日韩视频一区二区| 日本A片一级| 国产夫妻在线| 国产在线观看av| 国产在线免费视频| 蜜桃传媒入口| 麻豆传媒一区| 欧美日韩午夜福利视频| 免费A级毛片在线播放不收费| 无码区一区二区三区| 久久aaaa| 无码人妻精品一区二区蜜桃网站 | 欧美色色网| 国产在线观看| 亚欧久久| 操逼逼综合网| 精品无码一区二区三区在线| 日本精品三级| 99性视频| 国产乱码一区二区三区的解决方法| 午夜精品电影| 不卡日韩| 高清无码视频免费| igao在线观看| 人人干人人操人人爽| 日韩无码中字| 国产一级a爱做片免费☆观看| 中文字幕不卡无码| 欧美性爱视频免费观看| 国产精品久久久久久99| 欧美性爱a视频| 午夜亚洲AV永久无码精品蜜芽 | av黄色网| 性A免费在线播放| 欧美一区二区三区视频| 黄片免费观看网站| 高清无码波多野结衣| 自拍偷拍影音先锋| 一区二区三区不卡在线| 无码在线播放视频| 91白丝在线观看| 中文字幕你懂的在线三级| 人妻无码精品| 中日韩一级片| 精品午夜福利| 在线无码电影| 欧美性爱导航| 国产夫妻AV| 8050午夜一级| 无码专区av| 激情五月天小说网| 五月色婷婷撸| 国产三级网站| 亚洲一区在线视频| 国产一二三| 超碰人人人人人| 国产毛片在线视频| 精品一区电影| 91探花在线播放| 婷婷五月综合中文字幕| 国产一级操逼片| 国产超碰免费| 人妻无码蜜桃视频| 亚洲天堂天天| 九色视频在线观看| 免费黄色av| 伊人无码视频| 麻豆专区| 国产激情片| 农村一级婬片A片AAA毛片古装| 人人操人人搞| 久久精品视频一区| 久热免费视频在线观看| 高清无码不卡视频| 欧美一级特黄真人做受| 欧美性爱第四页| 久久国产精品伦子伦| 国产欧美激情| 久久夜色视频网| 球AV在线| 一区二区三区四区在线| 国产亲子乱A片免费视频| 婷婷五月中文字幕| 欧美日韩免费看| 韩国久久久| 影音先锋日韩资源| 午夜激情视频网站| 色婷婷在线视频观看| 亚洲欧美v| 人人色视频| 日本天堂在线| 国产日产亚洲精品| 成年人视频在线免费观看| 成人网站免费视频| 日韩无码高清一区| 亚洲天堂手机在线| 黄色a级片| 中文字幕有码在线看| 亚洲欧美国产高清vA在线播放| 中文字幕天堂在线| 黑人一区二区三区四区| 人妻丰满精品一区二区| 日本A∨在线| 无码色网| 操人在线观看| 人人摸人人操人人看| 日韩三级麻豆| 大香蕉综合闲人| 翔田千里av在线| 欧美性爱第四页| 91ThePorn国产| 日韩AⅤ视频| 先锋av资源在线| 特级爱爱视频| 免费A片在线| 无码人妻丰满熟妇区17水蜜桃| 亚洲天堂女人| AV-ThePorn| 操逼地址| 日韩无码你懂的| 91精品少妇高潮一区二区三区不卡 | 国产日韩欧美综合在线| 深爱五月激情| 日韩国无码| 成人做爰69片免费观看| 无码成人A片在线观看| 操逼福利| 国产色情在线观看| 东京热一区二区三区| 欧美色色色色色色| 超碰在线人人操| 日本无码在线播放| 熟女人妻人妻の视频| 免费国产黄色| 久久三级电影| 91成人免费视频| 日韩视频一区| 国产96在线亚洲| 午夜av免费在线| 牛牛精品视频一区二区| 欧洲三级片网站| 蜜桃视频欧美| 五月天国产视频| 国产成人V在线精品一区| 九热视频| 人妻18无码人伦一区二区三区精品 | 性猛交╳XXX乱大交| 日本色情视频网站| 西西4444www大胆无吗| 人妻少妇精品视频一区二区三区| 一级免费爱爱视频| 日韩在线国产| 日本黄色a片| 操逼视频网站免费观看| 久久久青草| 亚洲无码在线视频观看| 影音先锋av资源网站| 中文字幕不卡视频| 免费三级网站| 亚洲无码A片在线观看| 中文字幕无码在线视频| 国产激情AV| 欧美一区| brazzers疯狂作爱| 狠狠撸狠狠撸| 亚洲激情欧美激情| 日本成人一区二区| 久艹综合| 一本色道久久综合无码| 92久久| 日韩无码动漫| 成人免费无码婬片在线观看免费| 亚洲日韩久久| 亚洲日本中文字幕| 二区AV| 欧美精品一区二区三区蜜臀| 伊人大香蕉在线网| 亚洲成人大片| 草逼视频免费看| 色婷婷激情视频| 亚洲国产精品成人久久蜜臀| 亚洲无码一二三区| 大肉大捧一进一出两腿| 超碰欧美| 成人三级黄色| 中字幕视频在线永久在线观看免费| 久久久久久久久久久久国产精品 | 亚洲无码三级| 女人卖婬视频播放| 视频一区二区免费| 男人的天堂视频在线| 这里只有精品视频在线| 亚洲人妻在线播放| 午夜福利10000| 熟女人妻人妻の视频| 韩国午夜福利| 亚洲色色频| 欧美A片免费观看| 2021国产精品视频| 国产成人网站免费观看| 天天爱天天爽| 999免费视频| 成人视频在线播放| 日本精品视频| 久草视频免费在线播放| 91色人妻| 97精品人妻一区二区三区香蕉| 狠狠干天天日| 五月天狠狠干| 在线大香蕉| 大香蕉伊人网| 一区二区成人免费视频| 北条麻妃中文字幕旡码| 久久免费视频6| 青春草免费视频| 久久综合电影| 亚洲综合激情五月久久| 色丁香六月| 欧美精品成人网站| 91香蕉视频免费在线观看| 五月婷婷网站| 人人爽人人爽人人爽| 麻豆传媒嫂子| 国产一级电影网站| 91av一区二区三区| 尤物精品在线| 无码一道本一区二区无码| 青娱乐超碰在线| 日本女优婷婷青青草原| 综合激情av| 黄色在线播放| 人人爱天天做| 婷婷中文在线| 老骚老B老太太A片| 日韩不卡高清在线观看视频 | 男女av在线观看| av在线天堂网| 91在线成人| 婷婷五月天综合网| 一区二区免费视频| 北条麻妃精品视频| 免费观看一级毛一片| 欧美一级黄色大片| a片网| 欧美三级片在线观看| 五月天婷婷在线播放视频免费观看 | 強暴人妻一区二区三区| 欧美成人A片AAA片在线播放| 99热综合在线| 欧美在线视频免费观看| 欧美操比视频| 高清无码不卡AV| AAA片视频| AV性爱在线| 亚洲AV高清无码| 秋霞一区二区三区无码| 中国老少配BBwBBwBBW| 无码人妻少妇| 成人亚洲电影| 国产黄网| 一区二区中文字幕| 亚洲成人不卡| 综合国产| 91人妻无码| 亚洲性图第一页| 豆花成人视频在线观看| 亚洲无码高清视频在线| 97干干| 久久免费看视频| 免费黄色a片| 青青草免费观看视频| 欧美自拍偷拍| 大香蕉网站在线观看| 免费人成在线观看视频播放| 成人国产在线无码AV免费| 五月网站| 国产三级黄色AV| 亚洲国产一| 黄网免费| 色婷婷综合久久久中文字幕| 中文字幕码精品视频网站| 自拍三区| 无码囯无精品毛片大码| 免费黄色AV| 欧美老妇大BBBBXXXX| 久久这里只有精品9| 国产理论视频| 狼友初视频在线观看| 在线观看中文字幕无码| 亚洲撸撸| 亚洲小视频在线观看| 天天操人人妻| 亚洲制服中文字幕| 97人妻精品一区二区三区视频| 国产无码专区| 91艹艹| 久久99网站| 成人不卡| 国产精品无码一区二区三| 久久久免费观看视频| 夜夜狠狠躁日日躁| 国产嫩草久久久一二三久久免费观看| 欧洲无码精品| 日本三级韩三级99久久| 无码欧美| 91久久久久久久久| 天天干天天日天天射| 国产在线观看| 欧美熟女一区二区| 亚洲国产欧美日韩在线| 成人视频在线观看免费| 国产十欧洲十美国+亚洲一二三区在线午夜 | 亚洲A片电影| 五月天av在线| 国产人国产视频成人免费观看…| 真人一级毛毛片| 青青操网站| 日韩成人在线观看| 国产在线拍揄自揄拍无码男男 | 欧美日韩中文字幕在线视频| 乱伦视频网站| 操操操操一本到| 青青草大香蕉伊人| 九九无码视频| 特一级黄色电影| 亚洲高清超级无码在线视频观看| а√最新版天堂中文在线| 久操免费在线| 亚洲无码内射| 香蕉毛片| 欧美激情婷婷| 特级欧美AAAAAA| 国产高清视频在线观看| 亲子乱AV一区二区| 成人免费视频网| 中文字幕在线免费观看视频| 国产黄色片免费| 大香蕉欧美在线| 成人三级电影| 亚洲综合片| 不卡的av在线| 五夜福利成人视频| 尤物网站在线观看| 国产精品av在线| 亚洲无码aa| 国产精品久久久久久精| 91伊人网| 成人中文字幕无码| 青草视频在线免费观看|