aardio 文档

aardio 范例: Edge 浏览器控件 - web.view

CDP 文档

//远程调试
import win.ui;
/*DSG{{*/
var winform = win.form(text="Edge 浏览器控件 - web.view";right=759;bottom=469;bgcolor=16777215)
winform.add()
/*}}*/

import web.view;

/*
WebView2 调用 CDP 有两种方式:

1、内置 CDP 接口 —— 推荐使用
直接使用 web.view 提供的 cdp 前缀函数调用内置 CDP 接口。
多个 web.view 窗口相互不会冲突,CDP 命令默认操作当前页面。
同一用户数据目录,同一程序启动多个进程相互不会冲突。

2、远程调试接口 —— 不推荐使用
如果创建 WebView2 时在构造函数参数中指定远程调试端口,
我们就可以用 web.socket.chrome 创建远程调试客户端去操作 CDP 接口。

但同一个进程里所有 WebView2 只能开放并共享一个远程调试端口。
同一用户数据目录,同一程序启动多个进程相互会出现冲突。

——————————————————————————————————————————————————————————————————————。
如果同一用户数据目录的程序使用了上面的一种方式,
那么另外一种方式就无法正常使用。

如果不是为了从外部连接 WebView2 时尽量不要用远程调试端口。
推荐使用内置 CDP 接口。
*/
var wb = web.view(winform,/*用户数据目录*/,0/*自动分配调试端口*/);
winform.text = "正在打开网页,请稍候 ……"
winform.show();

//创建远程调试对象
import web.socket.chrome;
var ws = wb.openRemoteDebugging();

//允许触发 Runtime.executionContextCreated
//ws.Runtime.enable();

//通过远程调试协议打开指定网页  
//CDP 文档: https://chromedevtools.github.io/devtools-protocol   
ws.Page.navigate(
    url = "https://chromedevtools.github.io/devtools-protocol";
);

//截图
wb.wait("chromedevtools");

import crypt;
ws.Page.captureScreenshot().end = function(result,err){
   if(result[["data"]]){
       var bin = crypt.decodeBin(result[["data"]]);
       string.save("/screenshot.png",bin )

       import process.imageView;
       process.imageView("/screenshot.png");
       winform.text = "截图已完成…"
   } 
} 

win.loopMessage();
Markdown 格式