aardio 文档

aardio 范例: CDP 事件

//事件
import crypt;
import console;
import win.ui;
/*DSG{{*/
var winform = win.form(text="CDP 事件";right=818;bottom=507)
winform.add()
/*}}*/

import web.view; 
var wb = web.view(winform);
winform.show();

//允许监听网络事件
wb.cdp("Network.enable");

//订阅 CDP 事件
wb.cdpSubscribe("Network.requestWillBeSent",function(params){

    //https://chromedevtools.github.io/devtools-protocol/tot/Network/#event-requestWillBeSent
    if(params.request.url == params.documentURL){

        winform.text = params.request.url; 

        //获取 HTTP 请求头。
        var headers = params.request.headers;
        console.dumpJson(headers);

    }

    //CDP 事件应尽快退出,
    //如果返回函数,该函数将在 CDP 事件退出以后异步执行。
    return function(){
        //阻塞耗时操作适合放到这里。  
    } 
})

//订阅 CDP 事件
wb.cdpSubscribe("Network.responseReceived",function(params){

    //CDP 事件内部不要阻塞调用其他 CDP 命令。
    wb.cdp("Network.getResponseBody",
        {requestId = params.requestId},

        //使用回调函数异步调用其他 CDP 命令
        function(result,err){
            if(!result){ 
                console.log("出错了:",lasterr(err) ) 
                return;
            }

            if(result.base64Encoded){
                //result.body = crypt.decodeBin(result.body); 
            }
            else { 
                console.dump(result.body);
            } 
        }
    ) 
} ) 

wb.go("https://www.aardio.com");
win.loopMessage();
Markdown 格式