找回密码
 立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

查看: 5|回复: 0

[心得] aardio网页与程序交互

[复制链接]
  • TA的每日心情
    开心
    昨天 09:56
  • 签到天数: 34 天

    连续签到: 4 天

    [LV.5]常住居民I

    22

    主题

    38

    回帖

    488

    积分

    中级会员

    积分
    488
    来自: 中国贵州贵阳
    发表于 昨天 17:36 | 显示全部楼层 |阅读模式 来自: 中国贵州贵阳
    非业余 - aardio 编程语言 - 非官方问答社区
    风行者三期培训:Aardio+Python+Flutter,1000集课程让你成为全栈开发高手!https://mp.weixin.qq.com/s/_WOoHFtITUyLk2k7BXYGkg
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    aardio风行者第三期培训班https://mp.weixin.qq.com/s/cdZcvFiAWhlYTaSrQGCPvA
    编程学习之旅已满两个月,每天都像在探索神秘的数字迷宫,不断发现新惊喜。今天深入钻研的网页与程序交互,更是让我大开眼界 —— 原来看似独立的网页和程序,竟能像好友般默契 “对话”,这种奇妙的技术互动,瞬间点燃了我的求知欲!

    网页给程序发消息
    在 aardio 里,web.View 控件就像是网页和程序之间的“信使”。在网页上设置一个按钮,点击它就能触发消息发送。程序通过 wb.external 来“签收”这些消息,只要符合预设规则,程序就会立刻响应。简单文字、复杂数据结构都能传递。比如把包含姓名、年龄、爱好的对象发给程序,程序收到后整理展示,就像打开装满信息的包裹。

    [AAuto] 纯文本查看 复制代码
    import win.ui;
    import web.view;
    var winform = win.form(text="网页与程序交互示例";right=759;bottom=469)
    winform.add(webView={cls="webView";left=10;top=10;right=749;bottom=459;z=1})
    var wb = web.view(winform); 
    wb.external = {
        sendMessageToApp=function(message) {
            win.msgbox("收到网页消息:" + message)
        }
    }
    wb.html = /**
    <body style="white-space: pre;"><button 
       
        >发送消息给程序</button>
    **/
    winform.show();
    win.loopMessage();

    程序给网页传信息
    程序给网页传递信息依靠 web.View 控件的 eval 方法,像一把钥匙打开网页里 JavaScript 代码的“大门”。程序用 eval 执行网页里的特定函数并传消息,网页接收到后展示内容。传递复杂数据时,程序先把数据转成 JSON 字符串,网页收到再解析展示,互动感十足。

    [AAuto] 纯文本查看 复制代码
    import win.ui;
    import web.view;
    
    /*DSG{{*/
    var winform = win.form(text="网页与程序交互示例";right=759;bottom=469)
    winform.add(
    webView={cls="webView";left=10;top=10;right=749;bottom=459;z=1}
    )
    /*}}*/
    var wb = web.view(winform); 
    var data = {
        title: '文章标题',
        content: '这是文章的内容'
    };
    
    wb.external ={ 
        showDataFromApp = function() {
        // 把数据转换为 JSON 字符串传递给网页
        wb.eval('showDataFromApp(' + web.json.stringify(data) +')');
        }
    }
    
    wb.html = /**
    <body>
        <script>
            function showDataFromApp(data) {
                // 在网页里显示收到的数据
                alert('收到程序数据:标题 - ' + data.title + ',内容 - ' + data.content);
            }
            aardio.showDataFromApp()
        </script>
    </body>
    
    **/
    
    winform.show();
    win.loopMessage();
    

    双向交互实战
    最后实现了双向交互。程序按钮点击后发送用户信息,网页收到立刻展示;网页按钮点击发感谢消息,程序通过 wb.external 接收并显示。看着代码实现有来有回的对话,特别有成就感。这两个月学的知识融会贯通,更期待之后的学习了!

    [AAuto] 纯文本查看 复制代码
    import win.ui;
    import web.view;
    var winform = win.form(text="网页与程序交互综合示例";right=759;bottom=469)
    winform.add(button={cls="button";text="发送用户信息到网页";left=160;top=5;right=280;bottom=35},
               webView={cls="webView";left=10;top=50;right=749;bottom=459;z=2})
    var wb = web.view(winform); 
    wb.external = {
        sendThanksMessage = function(message) {
            win.msgbox("收到网页消息:" + message);
        }
    }
    winform.button.oncommand = function(id,event){
        var userInfo = {username: '李四', level: 3};
        wb.eval('showUserInfo(' + web.json.stringify(userInfo) + ')');
    }
    wb.html = /**
    <body><button>发送感谢消息给程序</button>
    <div id="userInfo"></div><script>
        function showUserInfo(userInfo) {
            document.getElementById('userInfo').innerHTML = '用户名:' + userInfo.username + ',用户等级:' + userInfo.level;
        }
        function sendThanksMessage() {
            aardio.sendThanksMessage('感谢程序的信息!');
        }
        </script>
    </body>
    **/
    winform.show();
    win.loopMessage();
    

    今天的学习收获满满,对编程的兴趣又增加了,明天继续探索!



    非业余 - aardio 编程语言 - 非官方问答社区
    风行者三期培训:Aardio+Python+Flutter,1000集课程让你成为全栈开发高手!https://mp.weixin.qq.com/s/_WOoHFtITUyLk2k7BXYGkg
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    aardio风行者第三期培训班https://mp.weixin.qq.com/s/cdZcvFiAWhlYTaSrQGCPvA
    回复

    使用道具 举报

    *滑块验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|非业余 - aardio 编程语言 - 非官方问答社区 知道创宇云防御

    GMT+8, 2025-5-10 03:44 , Processed in 0.114440 second(s), 30 queries .

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表