ExtJS плавающий фокус окна потерял обнаружение
Мне интересно, есть ли эффективный способ определить, теряет ли фокус плавающее окно или нет. У меня есть плавающее окно для временных вводов пользователя, и я хочу автоматически скрывать это окно, если пользователь забыл скрыть его после операции ввода (например, щелчки в другом месте). Я пытался использовать размытие на элементе окна, но ничего не произошло. рабочая демка: demo
спасибо за любую идею!
2 ответа
Этого можно добиться, добавив событие размытия к элементу 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
}
}
}
});
Прежде чем вы сможете определить, было ли окно размытым или нет, вам понадобится какое-то действие, чтобы в первую очередь размыть окно. Вы упомянули, что вы хотите, чтобы окно размылось, если пользователь "щелкает в другом месте"; Вы можете сделать это, добавив прослушиватель к вашей основной панели:
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, чтобы события, которые он прослушивает, фактически загорались.