aardio 文档

aardio 范例: Sciter 脚本调用本地函数

//调用 JS 函数
import win.ui;
/*DSG{{*/
var winform = win.form(text="Sciter 脚本调用本地函数";right=1014;bottom=523;parent=...)
winform.add()
/*}}*/

import web.sciter;
var sciter = web.sciter( winform );

//JS 调试输出发送到到控制台,支持 JS 的 console.log()
import web.sciter.debug;
sciter.attachEventHandler( web.sciter.debug );

//在 web.sciter.behavior 名字空间添加自定义 behavior
namespace web.sciter.behavior.button.command {  

    /*
    ltOwner 参数是绑定behavior的节点,
    实际上也就是指定了 behavior:command 的节点对象

    ltTarget 通常指的是实际触发事件的节点,
    或者根据不同的事件,ltTarget的意义有所不同 
    */
    onButtonClick = function (scTarget,scOwner,reason,behaviorParams) { 

        //调用节点的成员函数( Javascript函数 )
        scOwner.customMethod("在 aardio 中调用节点上定义的JS函数:这是参数")
    }

}

sciter.html = /**
<!doctype html>
<html>
<head>
   <META http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style type="text/css">
    html,body{ height:100%; margin:50; } 

    #my-button{  
        behavior:"button.command clickable"; 
    }
    </style>
</head>
<body> 
<button id="my-button">请点击这里</button> <span id="info"></span>
<script> 

document.getElementById("my-button").customMethod = function(str){
     document.getElementById("info").innerText = str;
}

// window(或globalThis) 前缀这里可以省略
window.jsFunction = function(param) {  
  document.getElementById("info").innerText = param;
  return param;
}

</script>
</body>
</html>
**/

//访问并操作页面节点
sciter.documentElement.querySelector("#info").insertAdjacentHTML("afterEnd","<br>测试insertAdjacentHTML")


sciter.eval(`
document.getElementById("info").innerText = "通过 sciter.eval 调用 javascript 函数 ";
`)

//参数"jsFunction"也可以写为 "globaThis.jsFunction"
sciter.call("jsFunction", "通过 sciter.call 调用 javascript 函数")

/*
更简单的方法是直接获取 Javascript 函数对象,
在 aardio 中能接收 Javascript 返回值的地方都支持直接返回Javascript 函数对象。
*/
var jsFunction = sciter.eval("jsFunction")

//如果要指定this参数,请使用 jsFunction.xcall(urlOrScriptName,jsThisObject,...)
jsFunction("直接在 aardio 中调用 Javascript 函数对象")

//也可以这样写:
//sciter.script.jsFunction("aardio 调用当前窗口 JavaScript 全局函数")

winform.show()
win.loopMessage();

Markdown 格式