aardio 文档

aardio 范例: WebView2 - 模拟手机浏览器(复制二维码自动打开)

import fonts.fontAwesome;
import web.view;
import win.ui;
/*DSG{{*/
var winform = win.form(text="WebView2 - 模拟手机浏览器(复制二维码自动打开)";right=452;bottom=770;bgcolor=0xFFFFFF;border="thin";max=false)
winform.add(
btnGo={cls="plus";left=417;top=7;right=447;bottom=33;align="left";border={bottom=1;color=0xFF969696};color=0x3C3C3C;dr=1;dt=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=8}};iconText='\uF1D8';notify=1;textPadding={left=25};z=2};
custom={cls="custom";text="自定义控件";left=8;top=44;right=441;bottom=767;db=1;dr=1;dt=1;z=1};
editUrl={cls="plus";left=6;top=7;right=416;bottom=33;align="right";border={bottom=1;color=0xFF969696};dr=1;dt=1;editable="edit";font=LOGFONT(h=-13);notify=1;textPadding={top=3;bottom=3};z=3}
)
/*}}*/

// 创建 WebView2 控件,模拟手机浏览器。
var wb = web.view(winform.custom,{
     startArguments = {  
        acceptLang = "zh-CN";//Accept-Language 请求头,一般没必要改
        userAgent = "Mozilla/5.0 (Linux; Android 13) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/115.0.5790.166"
    }; 
    userDataDir = _STUDIO_INVOKED ? io.appData("/aardio/webview2/user-data/ide/example/emulation")
}) 

// 启用 CDP 的 Emulation 域
wb.cdp("Emulation.enable");

// 模拟手机设备指标
wb.cdp("Emulation.setDeviceMetricsOverride", {
    width = winform.custom.width; // 屏幕宽度
    height = winform.custom.height; // 屏幕高度
    deviceScaleFactor = 1; // 设备像素比
    mobile = true; // 声明为移动设备
    touch = true; // 启用触摸事件模拟
});

// 启用 CDP 的 Network 域
wb.cdp("Network.enable");

// web.view( WebView2 ) 自定义 HTTP 请求头
wb.cdp("Network.setExtraHTTPHeaders", {
    headers = {
        ["Sec-CH-UA-Mobile"] = "?1"; // "?1" 表示 true
        ["Sec-CH-UA-Platform"] = '"Android"'; // 注意平台名称需要用双引号包围
    }
});

wb.go("https://mp.weixin.qq.com/s/qgzV0OHXTgoYy6Pdbecnvw");

winform.editUrl.setFocus();
winform.editUrl.editBox.onOk = function(ctrl,alt,shift){ 
    winform.btnGo.oncommand();
    return false; 
}

winform.btnGo.skin({
    color={
        active=0xFF00FF00;
        default=0xFF3C3C3C;
        disabled=0xFF6D6D6D;
        hover=0xFFFF0000
    }
})

winform.btnGo.oncommand = function(){
    wb.go(winform.editUrl.text);
}

import zbar;
import win.clip.bitmap;
import win.clip.viewer;
winform.clipViewer = win.clip.viewer(winform);

var scanner = zbar.scanner();
scanner.config('qrcode.enable');
winform.clipViewer.onDrawClipboard = function(){

    var bmp = win.clip.bitmap.read()
    if(bmp){ 
        scanner.scanBitmap(bmp,function(typeName,data){
            //二维码应当总是使用 UTF-8 编码
            if(!string.isUtf8(data)){
                data = string.fromto(data,936,65001);
            }

            if(inet.url.is(data,-1/*_URLIS_APPLIABLE*/)){
                wb.go(data);
            }
        }) 
    }
} 
winform.clipViewer.onDrawClipboard();

winform.show();
win.loopMessage();
Markdown 格式