aardio 文档

aardio 范例: web.view 回调 JS 函数对象

import win.ui;
/*DSG{{*/
var winform = win.form(text="web.view 回调 JS 函数对象";right=757;bottom=467)
winform.add()
/*}}*/

import web.view;
var wb = web.view(winform);

wb.external = {
    test = function(jsCallback){ 
        /*
        JS 函数对象在 aardio 中可以直接使用。
        但只能是异步调用,不能等待返回值。

        使用 wb.xcall 函数杂可以调用 JS 函数并获取返回值。
        但要注意 wb.xcall 内部是执行 JS 代码并使用 JSON 序列化交换参数与返回值。

        使用 wb.external 与 JavaScript 交互则是基于 COM 接口。
        除了字符串、数值、布尔值、时间值、buffer 这些基于传值的类型可以兼容以外,
        其他需要传址的 JS 对象(例如 JS 函数)在 aardio 中则是 COM 对象。
        COM 对象可以保持对原 JS 对象的引用,作为参数传回 JS 仍然会是原来的 JS 对象。
        */
        jsCallback("回调 JavaScript 函数的参数",jsCallback);
    };
}

wb.html = /********
<!doctype html>
<html><head>
    <meta charset="utf-8">
    <style type="text/css">html,body{ height:100%; margin:0; } </style>
    <script> 
    (async()=>{
            await aardio.test(
                function(str){
                    alert(str);
                } 
            ); 
    })()
    </script>
</head>
<body></body></html>
********/

winform.show();
win.loopMessage();

Markdown 格式