//web.view( WebView2 浏览器控件) - 入门 import win.ui; /*DSG{{*/ var winform = win.form(text="Edge 浏览器控件 - web.view";right=800;bottom=469;bgcolor=16777215) winform.add() /*}}*/ /* 网页开发文档教程 https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/html https://learnxinyminutes.com/docs/zh-cn/javascript-cn https://learnxinyminutes.com/docs/zh-cn/html-cn https://learnxinyminutes.com/docs/zh-cn/css-cn https://quickref.me/javascript https://quickref.me/es6 https://babeljs.io/docs/en/learn/#ecmascript-2015-features https://quickref.me/css web.view 入门教程: https://mp.weixin.qq.com/s/iYXPJgagXax9VgiIYaRfRw */ if(!_WIN10_LATER) import web.view.7; //兼容 Win7 以及之后版本,不支持新版 WebView2 的功能。 else import web.view;//支持 Win10 以及之后版本,导入这个就别导入前面的 web.view.7; /* 参数 @1 指定嵌入窗口(可以是 winform 或 static,custom 等控件对象)。 可选用参数 @2 指定浏览器用户数据目录,可选用参数 @3 指定浏览器启动参数。 */ var wb = web.view(winform); /* 在 Javascript 中可通过全局变量 `aardio` 访问 wb.external 对象。 在 JavaScript 中所有的 aardio 对象以及 aardio 对象的方法与属性都被包装为 Promise 对象 在 JavaScript 中调用 wb.external 导出的函数时,参数与返回值都不需要经过 JSON 转换。 除字符串、数值、布尔值、可兼容的数组、buffer 等基础值类型可以直接传值以外, 其他对象类型(JavaScript 中的 object 或 aardio 中的表对象 )自动转换为 COM 代理对象, 让我们可以通过 COM 接口间接操作跨语言的对象。 要注意不能将这种 COM 代理对象作为原生 JavaScript 对象使用, 例如不能用于 JavaScript 图表或表格的数据源对象,而 wb.export 导出的 aardio 函数则无此限制。 */ wb.external = { toString = function(){ return owner.property; }; property = "这是 aardio 对象的属性值"; methodWithParametersAndReturnValue = function(a,b){ return a + b } //aardio 函数如果抛出异常,网页 DevTools 调试工具可查看错误信息 } /* wb.export 导出 aardio 函数为 Javascript 全局对象( Promise 对象 ), JavaScript 调用这些 aardio 函数时将会使用 JSON 自动转换跨编程语言的参数和返回值。 这种经由 JSON 转换的对象与 JavaScript 完全兼容,而 wb.external 导出的函数则只能返回 COM 代理对象。 在被网页回调的 aardio 函数内部调用 wb.eval, wb.xcall 可能阻塞后续调用。 应改用非阻塞的 wb.invoke, wb.doScript 。或者通过 winform.setTimeout 异步调用 wb.invoke, wb.doScript。 */ wb.export({ alert = function(msg){ winform.msgbox(msg) //要避免重入,例如:不能在 alert 回调中再次调用 alert 函数 //wb.invoke("alet('test')"); }; nativeAdd = function(a,b){ return a + b; } }) /* 如果通过 wb.html 直接写入 HTML,则不能引用其他本地文件路径。 如果需要引用 JS,CSS 等本地资源文件,请改为: import wsock.tcp.simpleHttpServer; wb.go("/res/index.html") */ wb.html = /**
web.view 基于微软 WebView2(Edge/Chromium内核),