aardio 文档

aardio 范例: web.form 入门

//入门
import win.ui;
/*DSG{{*/
var winform = win.form(text="web.form 入门";right=892;bottom=566;scroll=1)
winform.add()
/*}}*/

/*。
web.form 基于任何 Windows 系统都自带的内核,生成的 EXE 体积很小。
即使现在的新系统删除 IE 浏览器,IE 内核浏览器的控件仍作为操作系统组件被保留
(这是因为 IE 内核网页控件因其接口简洁,曾像 static 控件一样普及并被广泛用于桌面程序)。
Win10/11 自带 IE11,不自带 IE11 的旧系统已经很罕见。

改用 web.view 库可支持系统自带的 Edge Chromium 内核。
相比 web.form ,web.view 更强大、更现代化、速度更快、内核更新。
但 web.form 属于进程内控件,COM 接口交互更为简单直接,
例如 JS 与 aardio 可以更直接方便的互调。
但 web.view 则只能以异步的方式实现跨进程调用。
*/
import web.form;
var wb = web.form( winform );//参数 @1 指定嵌入窗口(可以是 winform 或 static,custom 等控件对象)。

import console;
wb.external={
    tab = {abc=1;b=2};
    aardioArray = function(){
        return wb.jsArray({12;23;34}); 
    };
    log = function(...){
        console.log(...)
    } 
} 
import console;

wb.html = /**
<!doctype html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <script type="text/javascript">

    $enum = function(obj,callback,thisObj){

        if( obj instanceof Array ){
            for(var i=0;i<obj.length;i++){
                callback.call(thisObj||window,i,obj[i],obj);  
            }
        }
        else if( obj instanceof Object ){
            for( k in obj){
                callback.call(thisObj||window,k,obj[k],obj); 
            }
        }
        else{
            if(typeof(obj)=="unknown"){
                var array = new VBArray(obj).toArray() //注意多维 aardio 数组转换为 JScript 会转换为单维数组,改用 JSON 传输参数可支持更多 JS 对象
                for (var i = 0; i < array.length; i++) {
                    callback.call(thisObj||window,i,array[i],array );
                }
            }
            else if( obj ) { 
                var e = new Enumerator(obj);  
                var k;
                if(!e)
                    return;

                for   (;!e.atEnd();e.moveNext()){ 
                    k = e.item(); 
                    callback.call(thisObj||window,k,obj[k],obj); 
                } 
            }
        } 
    }  
    </script>

    <script type="text/javascript">
    //其他Js代码

    </script>

    <style type="text/css">
    body { 
        font: 10.5pt/1.3;
    }
    </style> 
</head>
<body style="margin:20px;font-size:14px">
    <button id="myId">  
        点这里试一试
    </button>
<br><br>
web.form 基于任何 Windows 系统都自带的内核,生成的 EXE 体积很小。
即使现在的新系统删除 IE 浏览器,IE 内核浏览器的控件仍作为操作系统组件被保留
(这是因为 IE 内核网页控件因其接口简洁,曾像 static 控件一样普及并被广泛用于桌面程序)。
Win10/11 自带 IE11,不自带 IE11 的旧系统已经很罕见。
<br><br>
改用 web.view 库可支持系统自带的 Edge Chromium 内核。
相比 web.form ,web.view 更强大、更现代化、速度更快、内核更新。
但 web.form 属于进程内控件,COM 接口交互更为简单直接,
例如 JS 与 aardio 可以更直接方便的互调。
但 web.view 则只能以异步的方式实现跨进程调用。
</body>
</html>
**/

var js = /**
    external.log( "Hello, aardio!" )
    external.log( "Welcome to aardio!",event.srcElement.id );
    //枚举js数组
    $enum(
        [1,2,3],
        function(v,i){
            external.log(v,i)
        }
    )
    //枚举js对象
    $enum(
        {a:123,b:456},
        function(k,v){
            external.log(k,v)
        }
    )
    //枚举aardio数组
    $enum(
        external.aardioArray(),
        function(k,v){
            external.log(k,v)
        }
    )
    //枚举aardio对象
    $enum(
        external.tab,
        function(k,v){
            external.log(k,v)
        }
    )
**/
wb.eventScript(js,"myId","onclick")

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