sciter 自定义弹窗带阻塞功能

主界面tis操作:

注意:程序运行的不能使用这个弹窗要重新生成弹窗。他会阻塞程序运行从而程序崩溃。

封装函数:

function MsgBoxOneButton(TipsText)
{
  var initialData = {
    name: TipsText
  };
    var r =
    <MsgBox >
    <form>
        <p|text(name)  .tips-text></p>
     </form>
      <buttons>
        <button id="ok" .ok-button .button-cancel2-left role="default-button">OK</button>
     </buttons>
    </MsgBox>(initialData);
    
    stdout.println("返回的东西 r= "+r);
    return r;
}
function MsgBoxTwoButton(TipsText)
{
     var initialData = {
     name:TipsText
  };
    var RUE=    <MsgBox>
        <form>
            <p|text(name) .tips-text></p>
        </form>
    <buttons>
        <button id="cancel" .button-cancel2 .button-cancel2-left role="cancel-button">Cancel</button>
        <button id="ok" .ok-button role="default-button">OK</button>
     </buttons>
      </MsgBox> (initialData);
      stdout.println("返回的东西 RUE= "+RUE);
      return RUE;
}

$(#Page1Cancel).onClick = function() {

    var r = MsgBoxOneButton("Hello world!");调用
    stdout.println("返回的东西 r= "+r);
    
    var Two = MsgBoxTwoButton(" Hello world!\
       1231321321321\
       sadfasdfsad\
       1vcsda6v1sd65\
       csdafsdafsd");
    stdout.println("返回的东西 Two= "+Two);
}

封装弹窗函数:

function MsgBox(atts,kids) {
stdout.println("消息参数1 atts = "+atts);
stdout.println("消息参数2 atts = "+kids);
  var vcontent;
  var vbuttons;
  if( !kids.length ) {
    vcontent = "{Nothing?}";
    vbuttons = <button id="ok" .ok-button role="default-button" >OK333</button>;
  }
  else if( kids.last.tag == #buttons ) { // we've got explicit <buttons>
    vcontent = kids.splice(0,kids.length - 1);
    vbuttons = kids[0][1]; // content of <buttons>...</buttons>
  } else {
    vcontent = kids;
    vbuttons = <button id="ok"  role="default-button" >OK222</button>;
  }

  const params = {
    vcontent: vcontent,
    vbuttons: vbuttons,
    type: atts,
    caption: atts?.caption ?? "Sciter"
  };
  // we will pass atts as they are to view.dialog{} + url + parameters
  const dialogDef = (atts || {}).extend {
    url: $url(msgbox.htm),  //新建窗口
    parameters: params
  };

  if(!dialogDef.alignment)
    dialogDef.alignment = -5; // in the middle of parent view  弹出位置
  return function(formData = {}) {
    // show modal dialog:
    params.extend { vdata: formData };
    var r = view.dialog(dialogDef);
    return !r || r == #cancel ? false : r;
  }

}

新弹窗Html:

<html window-frame="solid" style="height:auto;width:auto;">
    <head>
        <title>Sciter1111</title>
        
        <style src="css\index.css" />
    
    </head>
           <script type="text/tiscript">

    //debug log: view.parameters;
const {vcontent,vbuttons,vdata,type,caption} = view.parameters;

stdout.println("文本传输 vcontent= "+vcontent);
stdout.println("文本传输 vbuttons= "+vbuttons);
stdout.println("文本传输 vdata= "+vdata);
stdout.println("文本传输 type= "+type);
stdout.println("文本传输 caption= "+caption);
//debug log:vcontent,vbuttons,vdata;
const main = $(main#content);


main.content(vcontent);
$(footer#button-bar).content(vbuttons);

const form = main.$(form);

if(form) {
  main.attributes["has-form"] = true;
  form.value = vdata;
}

event ~click $([href]) {
  var href = this.attributes["href"];
  Sciter.launch(href);
  return true;
}
//按钮返回值
event click $(footer button) (evt,button) {
  if( var bid = button.attributes["id"] ) {
    if( bid == "ok" && form) {
      view.close(form.value);     
      return true;
    }
    view.close(symbol(bid));
    return true;
  }
}
//窗口界面大小
function setupMins() {
  const body = $(body);
  var w = body.intrinsicWidthMax();
  var h = body.intrinsicHeight(w);
  //debug log: w,h;
  view.windowMinSize = (w,h);
}
//界面设置函数
function self.ready() {
  view.windowCaption = caption || type;
}

view << event statechange { setupMins(); }
view << event resolutionchange { setupMins(); }

        </script>
    <body .tips >
        <div .tips-top .flow role="window-caption">
                <text>Tips</text>
                <button #CloseCaption role="window-close" .cloes-button></button>
            </div>
      <main #content .main-tips></main>
      <footer #button-bar></footer>
    </body>
</html>

 

原始路径:samples\+reactor\components\msgbox

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值