ExtJS浮动窗口焦点丢失检测

时间:2012-02-04 19:25:30

标签: extjs focus window blur floating

我想知道是否有一种有效的方法来检测浮动窗口是否失去焦点。我有一个用于用户临时输入的浮动窗口,如果用户在输入操作后忘记隐藏它(例如,在其他地方点击),我想要做的就是自动隐藏此窗口。我尝试在窗口元素上使用模糊事件,但什么也没发生。 一个有效的演示:demo

感谢您的任何想法!

2 个答案:

答案 0 :(得分:4)

这可以实现向ext窗口元素添加模糊事件,下面是示例代码

    Ext.applyIf(me, {
        items: [
            {
                xtype: 'button',
                text: 'Done',
                listeners: {
                    click: {
                        fn: me.onDoneButtonClick,
                        scope: me
                    }
                }
            }
        ],
        listeners: {
            el: {
                blur: {
                    fn: me.onWindowLoseFocus,
                    scope:me
                }
            }               
        }
    });

答案 1 :(得分:0)

在检测窗口是否模糊之前,您需要采取一些措施来模糊窗口。您提到如果用户“点击其他地方”,您会想要一个模糊的窗口;你可以通过向你的mainPanel添加一个监听器来实现这个目的:

var mainPanel = new Ext.Panel({ //define a main non-floating panel
    title: 'main',
    id: 'mainPanel',
    width: 400,
    height: 400,
    listeners: {
        afterrender: function(self) {
            self.body.on('click', function() {
                alert('clicked')
            });
        }
    }

});

单击面板主体后,您可以模糊floatWin,使其正在侦听的事件实际触发。