aardio 文档

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

CDP 文档

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

import web.view;

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

1、内置 CDP 接口 —— 推荐使用
直接使用 web.view 提供的 cdp 前缀函数调用内置 CDP 接口。
CDP 命令操作当前实例页面。

如果创建 web.view 实例时除了宿主窗口以外的构造参数相同,
则同一用户数据目录 多个 web.view 实例相互不会冲突。

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

但同一用户数据目录只能开放并共享一个远程调试端口。
——————————————————————————————————————————————————————————————————————。
如果同一用户数据目录的程序使用了上面的一种方式,
那么另外一种方式就无法正常使用。

如果不是为了从外部连接 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 格式