aardio 文档

aardio 范例: 在aardio中嵌入electron

//使用远程调试接口
//请改用微软的 WebView2(也就是 aardio 标准库里的 web.view )
import win.ui;
/*DSG{{*/
var winform = win.form(text="在aardio中嵌入electron";right=1276;bottom=767;clipch=1)
winform.add(
txtMessage={cls="richedit";left=1277;top=285;right=1758;bottom=799;bgcolor=0xFFFFFF;db=1;dr=1;edge=1;link=1;multiline=1;vscroll=1;z=1}
)
/*}}*/

import electron.app;
var theApp = electron.app(winform);

//启动主进程的 main.js
theApp.jsMain =/**  
    const aardio = require('aardio')  //启动RPC服务允许调aardio/electron互调函数,创建BrowserWindow主窗口
    const app = require('electron').app //管理electron进程的生命周期

    app.on('window-all-closed', () => {
        app.quit();//退出electron进程
    }) 
**/

theApp.html = /** 
<!DOCTYPE html>
<html>

  <head>
    <meta charset="UTF-8">
    <title>aardio嵌入electron演示</title>
    <script type="text/javascript">    
        //导入aardio中的app.external 对象
         aardio = require("aardio"); 
    </script>
  </head>

  <body>

    <h2 onmousedown="aardio.hitCaption();return false;" 
        style="-webkit-user-select: none;cursor:default;">按这里调用aardio.hitCaption()拖动窗口!</h2>

   <button onclick="aardio.quit();">点这里调用aardio关闭窗口</button> <br><br>

   <button onclick="aardio.showDevtools();">点这里打开chrome开发工具</button><br><br> 

   <button onclick="aardio.connectDebugging();">第一步:连接远程调试端口</button><br><br> 
   <button onclick="aardio.testDebugging();">第二步:使用远程调试接口控制网页</button><br><br> 
    </body>    



</html>
**/ 


import web.socket.chrome;
var wsRemotetDebugging = web.socket.chrome();

//导出对象给electron
theApp.external = {
    showDevtools = function(){ 
        for id,title,wsUrl,devtoolsUrl in wsRemotetDebugging.eachDebuggingPage() {
            import process;
            process.execute(devtoolsUrl);
            break;
        } 

    }
    connectDebugging = function(){ 
        //先让JS函数返回,推迟异步打开调试端口,试验这样比较流畅,反之偶尔会出现卡的现象
        winform.setTimeout( function(){
            if(!wsRemotetDebugging.connect()){
                winform.txtMessage.print(wsRemotetDebugging.getDebuggingInfo())
                winform.txtMessage.print("没有可用的远程调试接口,请先关闭连接到本页面的远程调试开发工具,注意远程调试接口只能被一个客户端独占");
            }   
        }); 
    }
    testDebugging = function(){
        wsRemotetDebugging.Network.enable( maxTotalBufferSize = 10240;).end = function(result,err){
            winform.txtMessage.print("调用Network.enable结果:",result,err)
        }   

        wsRemotetDebugging.Page.navigate( url = "http://bbs.aardio.com/forum.php?mod=viewthread&tid=11486&from=portal").end = function(result,err){
            winform.txtMessage.print("调用Page.navigate返回参数",err)
        }  
    }

}

theApp.ws.onError = function(hSocket,err){
    winform.txtMessage.print("WebSocket服务端出错:",err );       
}

//启用远程调试,并自动分配空闲不会冲突的端口
theApp.remoteDebuggingPort = 0;

//启动electron,也可以省略其他启动参数,直接指定要启动的网页地址
theApp.start("/res/main.aardio")

//监听chrome事件
wsRemotetDebugging.on("Inspector.detached",function(param){
    winform.txtMessage.print("chrome已主动断开连接,原因:",param);
}) 

wsRemotetDebugging.on("Network.requestWillBeSent",function(param){
    winform.txtMessage.print("准备发送请求:",param );       
})

//打开连接触发的事件
wsRemotetDebugging.on("open",function(){ 
    winform.txtMessage.print("已打开连接")      
})

wsRemotetDebugging.on("close",function(){
    winform.txtMessage.print("已关闭连接")       
});

wsRemotetDebugging.on("error",function(err){ 
    winform.txtMessage.print("出错了",err);
});  

winform.txtMessage.orphanWindow()

winform.show() 
win.loopMessage();

Markdown 格式