扩展库中的不可关闭对话框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展库中的不可关闭对话框相关的知识,希望对你有一定的参考价值。

我正在从ExtLib创建一个对话框,我想阻止用户按Escape或点击X图标。

我已经检查了几个关于相同实现的帖子,但没有一个使用ExtLib的Dialogbox。

我能够用CSS隐藏图标,我正在尝试使用dojo.connect来防止使用Escape键:

    XSP.addOnLoad(function(){
    dojo.connect(dojo.byId("#{id:dlgMsg}"), "onkeypress", function (evt) {  
        if(evt.keyCode == dojo.keys.ESCAPE) {           
            dojo.stopEvent(evt);
        }
    });
});

注意我只有在手动创建对话框而不是从ExtLib创建对话框时才能使它工作;然后我可以用例如:

dojo.connect(dojo.byId("divDlgLock"), "onkeypress", function (evt) {
        if(evt.keyCode == dojo.keys.ESCAPE) {           
            dojo.stopEvent(evt);
        }
});

有任何想法吗?

答案

通过添加输出脚本块,您可以扩展现有声明:

<xp:scriptBlock id="scriptBlockNonCloseableDialog">
   <xp:this.value>
      <![CDATA[
         dojo.provide("extlib.dijit.OneUIDialogNonCloseableDialog");
         dojo.require("extlib.dijit.Dialog");
         dojo.declare(
            "extlib.dijit.OneUIDialogNonCloseableDialog",
            extlib.dijit.Dialog,
            {
               baseClass: "",
               templateString: dojo.cache("extlib.dijit", "templates/OneUIDialog.html"),
               disableCloseButton: true,
               _onKey: function(evt){
               if(this.disableCloseButton &&
                  evt.charOrCode == dojo.keys.ESCAPE) return;
                  this.inherited(arguments);
               },
               _updateCloseButtonState: function(){
                  dojo.style(this.closeButtonNode,
                  "display",this.disableCloseButton ? "none" : "block");
               },
               postCreate: function(){
                  this.inherited(arguments);
                  this._updateCloseButtonState();
                  dojo.query('form', dojo.body())[0].appendChild(this.domNode);
               },
               _setup: function() {
                  this.inherited(arguments);
                  if (this.domNode.parentNode.nodeName.toLowerCase() == 'body')
                     dojo.query('form', dojo.body())[0].appendChild(this.domNode);               
               }        
            }
         );

         // This is used by the picker dialog to grab the correct UI
         XSP._dialog_type="extlib.dijit.OneUIDialogNonCloseableDialog";
      ]]>
   </xp:this.value>
</xp:scriptBlock>

以上是关于扩展库中的不可关闭对话框的主要内容,如果未能解决你的问题,请参考以下文章

在 zxing 片段库中打开/关闭手电筒

我该如何做模态对话框片段(代码在我关闭之前不会执行)

ruby 我感兴趣的库中的代码片段

日期选择器对话框在片段中不起作用[关闭]

一个具有两种显示类型的片段[关闭]

错误时间选择器对话框。这是代码: