前言 aardio构建界面有四种方式
winform
web.form
web.kit/web.blink
htmlayout
其中有三个是能加载网页的
web.form
web.kit
web.blink
web.blink(miniblink)使用新版chromium内核,并且精简了体积,兼容WKE( WebKit )组件的接口。 aardio中提供了基于WKE( WebKit )的web.kit 扩展库,也提供了基于miniblink的web.blink扩展库。 这两个扩展库基本的用法是一样的( 因为接口基本一样 )。
但是这两个库都是精简过的,都不支持视频的加载。
只考虑加载视频的话可以考虑用Flash组件
要是要实现WebRTC等的话就不要使用这个技术了,推荐使用Electron。
web.form是直接调用系统的IE,所以不存在精简的问题。
几种方式对比 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import win.ui;var winform = win.form(text="web.form" ;right=1123 ;bottom=570 )import web.form;var mb = web.form.ie11(winform);mb.go("https://www.psvmc.cn" ) winform.show(); win.loopMessage();
web.blink 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import win.ui;var winform = win.form(text="web.blink" ;right=1123 ;bottom=570 )import web.blink.form; var mb = web.blink.form(winform);mb.go("https://www.psvmc.cn" ) mb.showDevTools() winform.show(); win.loopMessage();
相应的库也会大一点
web.kit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import win.ui;var winform = win.form(text="web.kit" ;right=1123 ;bottom=570 )import web.kit.form; var mb = web.kit.form(winform);mb.go("https://www.psvmc.cn" ) winform.show(); win.loopMessage();
这个就不支持调试工具
AARDIO和JS互调 判断是否安装Flash 三个方式页面和代码之间的互相调用也是通用的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 wb.waitDoc(); wb.external = { flashISInstall = function ( arg ) { io.print("Flash是否可用:" ,arg); if (!arg){ var result = winform.msgboxTest("Flash未安装是否安装" ,"Flash检测" ); if (result){ process.execute_waitInput("https://www.flash.cn/cdm/latest/flashplayerax_install_cn.exe" ) } } } } var js = wb.document.getScript().execScript(js);
注意要调用页面的方法,要等待页面加载完毕
获取Title 方式1 1 2 wb.waitDoc(); winform.text = wb.document.title;
方式2 1 2 3 4 5 6 7 8 9 wb.waitDoc(); var titleTags = wb.document.getElementsByTagName("title" )for i, title in com.each(titleTags) { if (i == 1 ) { winform.text = title.innerHTML; break ; } }
方式3 有这么一种情况 页面在加载后,并没有Title,Title是后来才更改的,这样我们通过上面的方式是获取不到的,所以这里使用定时任务获取。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 wb.external = { titleCb = function (title ) { winform.text = title; } } var mJS = ; wb.waitDoc(); wb.document.getScript().execScript(mJS);
修改原事件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 mb.external = { tologin = function ( ) { mb.go(homepage); } } mb.NavigateComplete2 = function (pDisp, url ) { if (url != homepage){ var js2 = mb.document.getScript().execScript(js2); } }
文件下载 有的前端是这样写的文件下载
1 2 3 4 5 6 7 var fileurl = "https://www.flash.cn/cdm/latest/flashplayerax_install_cn.exe" ;var btn2 = document .querySelector(".btn2" );btn2.onclick = function ( ) { try { window .open(fileurl, "_blank" ); } catch (error) {} };
也就是说文件的下载是在新标签中打开的
这种情况浏览器会自动打开新标签 弹出下载框后自动关闭标签
我们该怎么实现呢
我们要在弹出的窗口中添加如下代码
aardio
1 2 3 4 wb.NavigateError=function (pDisp,url,target,statusCode,cancel ) { winform.close(); return url,target,statusCode,false }
但是我们关闭窗口如果window.open(fileurl, "_blank");不做异常捕获,会弹出一个JS报错,所以一定要做异常捕获。