Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 失去焦点时自动关闭ExtJS窗口_Javascript_Extjs_Extjs5_Extjs6 - Fatal编程技术网

Javascript 失去焦点时自动关闭ExtJS窗口

Javascript 失去焦点时自动关闭ExtJS窗口,javascript,extjs,extjs5,extjs6,Javascript,Extjs,Extjs5,Extjs6,我有一个小窗口,可以在我的应用程序中打开,允许用户执行一些琐碎的任务,当用户在窗口外单击时,我只想关闭它。一些示例建议在后台掩码上侦听单击事件-除了感觉有点不正常之外,这不是一个选项,因为窗口没有配置为模态,因为它的功能是非阻塞的,我不想限制它背后的UI 我最初试图钩住blur事件,但是ExtJS5+中的行为是喜怒无常的,即在下面的示例中,尝试在窗口外拖动或单击 var win=Ext.create'Ext.window.window'{ 宽度:500, 身高:250, 项目:{ xtype:'

我有一个小窗口,可以在我的应用程序中打开,允许用户执行一些琐碎的任务,当用户在窗口外单击时,我只想关闭它。一些示例建议在后台掩码上侦听单击事件-除了感觉有点不正常之外,这不是一个选项,因为窗口没有配置为模态,因为它的功能是非阻塞的,我不想限制它背后的UI

我最初试图钩住blur事件,但是ExtJS5+中的行为是喜怒无常的,即在下面的示例中,尝试在窗口外拖动或单击

var win=Ext.create'Ext.window.window'{ 宽度:500, 身高:250, 项目:{ xtype:'框', 填充:20, html:“测试窗口…” } }; 赢。在“模糊”上,赢。接近,赢; 赢。秀; 在5.1.0至5.1.1中,这完全失败。 在5.1.2至6.2.0中,此功能正常,但如果您尝试拖动标题,则会意外关闭。
是否有其他配置或简洁的解决方案涵盖了这两个问题,跨版本?

我选择了以下MVC设置,它侦听全局单击事件,然后确定用户是否单击了窗口,而不是与组件的焦点状态作斗争

Ext.define'App.window.DismissableWindow'{ 扩展:“Ext.window.window”, 控制器:“dismissableWindow” //配置。。。 }; Ext.define'App.window.DismissableWindowController'{ 扩展:“Ext.app.ViewController”, 别名:“controller.dismissableWindow”, 听着:{ 全球:{ 鼠标向下:“dismissWindowCheck” } }, dismissWindowCheck:函数EV{ var view=this.getView; 如果!view.ownsev.getTarget view.close; } };
我选择了下面的MVC设置,它侦听全局单击事件,然后确定用户是否单击了窗口,而不是与组件的焦点状态对抗

Ext.define'App.window.DismissableWindow'{ 扩展:“Ext.window.window”, 控制器:“dismissableWindow” //配置。。。 }; Ext.define'App.window.DismissableWindowController'{ 扩展:“Ext.app.ViewController”, 别名:“controller.dismissableWindow”, 听着:{ 全球:{ 鼠标向下:“dismissWindowCheck” } }, dismissWindowCheck:函数EV{ var view=this.getView; 如果!view.ownsev.getTarget view.close; } };