ExtJS плавающий фокус окна потерял обнаружение - PullRequest
0 голосов
/ 04 февраля 2012

Мне интересно, существует ли эффективный способ определить, теряет ли фокус плавающее окно или нет.У меня есть плавающее окно для временных вводов пользователя, и я хочу автоматически скрывать это окно, если пользователь забыл скрыть его после операции ввода (например, щелчки в другом месте).Я пытался использовать размытие на элементе окна, но ничего не произошло.рабочая демоверсия: демо

спасибо за любую идею!

Ответы [ 2 ]

4 голосов
/ 01 августа 2012

Этого можно добиться, добавив событие размытия к элементу ext window, ниже приведен пример кода

    Ext.applyIf(me, {
        items: [
            {
                xtype: 'button',
                text: 'Done',
                listeners: {
                    click: {
                        fn: me.onDoneButtonClick,
                        scope: me
                    }
                }
            }
        ],
        listeners: {
            el: {
                blur: {
                    fn: me.onWindowLoseFocus,
                    scope:me
                }
            }               
        }
    });
0 голосов
/ 05 февраля 2012

Прежде чем вы сможете определить, было ли окно размытым или нет, вам понадобится какое-то действие, чтобы в первую очередь размыть окно.Вы упомянули, что вы хотите, чтобы окно размылось, если пользователь «щелкает в другом месте»;Вы можете сделать это, добавив прослушиватель к вашей основной панели:

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, чтобы события, которые он прослушивает, фактически запускались.

...