【问题标题】:extjs closing a Ext.window.Window on ESCextjs 在 ESC 上关闭 Ext.window.Window
【发布时间】:2011-07-01 09:10:01
【问题描述】:

我正在开发 extjs4。我有一个网格面板。在选择网格面板的一行时,我创建了一个简单的窗口。我想在用户点击 ESC 时关闭它。如果用户单击窗口中的任何内容,然后单击 ESC,则窗口将关闭。但是如果用户还没有触摸窗口,ESC 不会关闭窗口。 知道怎么做吗?

var win = Ext.create('Ext.window.Window', {
                    title: 'Details',
                    width: 400,
                        layout: 'fit',
                        iconCls: 'details-icon',
                        items: simple
                    }).show();

【问题讨论】:

  • 问题出在关闭的 sn-p 中。请张贴。
  • 我没有任何关闭的sn-p。我认为问题在于焦点不在此窗口中,直到我单击它(这就是 ESC 不关闭的原因)。我认为当您创建窗口并以这种方式显示时,焦点会自动移动到窗口,但显然需要一些额外的设置。
  • 我认为如果您将 modal:true 添加到您的窗口配置中,它将按您的预期工作。
  • 有趣,我尝试了 modal:true,它按预期将屏幕的其余部分变灰,但按 ESC 时仍然不关闭窗口。 (和以前一样,只有首先我用鼠标在窗口内单击,然后 ESC 关闭窗口)。

标签: extjs extjs4


【解决方案1】:

也许胜利不是重点。

或尝试使用这个:

监听窗口显示事件,并在文档中添加一个 KeyMap:

 var map = new Ext.util.KeyMap(Ext.getBody(), [{
    key: Ext.EventObject.ESC,
    defaultEventAction: 'preventDefault',
    scope: this,
    fn: function(){win.close()}
 }]);

【讨论】:

  • 好一个! (+1)但如果您在创建 win 之前随时按 ESC,它可能会失败(win.close 上的 JS 错误)。也许在 win.close 之前添加 if(win)?
  • @atian25 如果您将 KeyMap 绑定到 win.getEl()(它在我测试的模态窗口的情况下有效)而不是 Ext.getBody(),是否需要取消隐藏/关闭?顺便 +1 ;)
  • 对不起,不要长时间使用extjs。也许你可以阅读KeyMap源码找到答案,如果找到了别忘了告诉我^_^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多