Показать сообщение отдельно
  #11 (permalink)  
Старый 20.04.2015, 10:33
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Нашел способ как обойти этот нюанс. Правда способ не хороший на вид. Ибо в дереве DOM болтается лишний input (который приходится скрывать, причем скрывать нехорошим способом, ибо если его скрыть нормальным способом, то механизм не работает).

Вот код:

https://fiddle.sencha.com/#fiddle/lgr

console.clear();

Ext.FocusManager.enable(true);

Ext.define("MyComponent", {
    extend: "Ext.Component",
    
    focusable: true,
    focusEl: null,
    
    privates: {
    	getFocusEl: function() {
        	return this.focusEl;
    	},
    },
    
    initFocusable: function() {
        this.focusEl = Ext.create("Ext.Element", document.createElement("input"));
        this.focusEl.appendTo(Ext.getBody());
        this.focusEl.applyStyles({
            position: "absolute",
            top: "-5000px",
            left: "-5000px"
        });
    }
    
});

var comp = Ext.create("MyComponent", {
    renderTo: Ext.getBody(),
    html: "Тестовый компонент"
});

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

comp.on("focus", function() {
    console.log("FOCUS");
});

comp.on("blur", function() {
    console.log("BLUR");
});

comp.focus();
comp.blur();
Ответить с цитированием