搜索
查看: 1638|回复: 0

miniblink使用模态对话框的技巧

[复制链接]

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2018-7-19 18:57:39 | 显示全部楼层 |阅读模式
其实很简单,
随时记住JS只能单线程( 单线程好处很多 - 所以这里不要提多线程的梗  ),
任何时候都不要阻塞JS函数:
import win.ui;
/*DSG{{*/
var mainForm = win.form(text="miniblink使用模态对话框的技巧";right=800;bottom=600)
mainForm.add()
/*}}*/

import web.blink.form;
var mb = web.blink.form(mainForm);

//定义网页脚本可调用的本地函数
mb.external = {
   
    aardioCall =
function(){  

        
//任何时候都不要阻塞任何JS回调函数,下面异步弹出模态对话框
        mainForm.setTimeout(
            
function(){
               
var frmChild = win.form(text="这是一个模态对话框");
               
var mb2 = web.blink.form(frmChild); //创建miniblink浏览器窗口
                mb2.external = frmChild;
               
                mb2.html =
/**
                <input type="text" value="请输入要返回的值"><br>
                <a href='javascript:
                            external.endModal(document.querySelector("input").value);
                        '>关闭模态对话框并返回上面文本框中的值</a>
                **/

               
var ret = frmChild.doModal(mainForm)
               
               
/*
                注意一旦aardioCall返回,
                aardioCall参数中传过来的JS对象就会被释放,
                所以js对象应当即用即取
                */

                mb.getEle(
"result").innerText = ret;
            }
        )
        
        
//因为winform.setTimeout是异步执行的,所以aardioCall可以立即返回
    };
}

mb.html =
/**
<a href='javascript:external.aardioCall();
'>JS调用aardio函数弹出模态窗口</a> <br>

<span id="result"></span>
**/


mainForm.show()
win.loopMessage();



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-15 14:40 , Processed in 0.046875 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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