前言 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报错,所以一定要做异常捕获。