#extjs
Вопрос:
Я использую sencha ExtJS версии 6.5.1 с современным инструментарием, и у меня проблема в том, что обработка событий клавиатуры с помощью карты клавиш работала в прошлом и теперь больше не работает. Я не могу сказать, с каких именно пор это больше не работает, я знаю только, что это определенно сработало 14 октября 2020 года и некоторое время после этой даты. Я использую его в качестве параметра, например, в диалоговом окне, как это:
keyMap: {
ENTER: {
handler: function (e, view) {
console.log("ENTER CLICKED");
}
}
}
Он не работает с базой кода с 14 октября, поэтому я думаю, что это не проблема с моим кодом. Я не могу объяснить, какие обстоятельства заставили его перестать работать.
Я создал пример sencha fiddle с современным инструментарием версии 6.5.1, где он не работает, когда вы меняете версию на классическую 6.5.1, он работает.
У вас есть идея, в чем проблема, или вы можете помочь мне снова заставить ее работать?
Ответ №1:
Из-за того, что контейнер диалогового окна не фокусируется на открытии, события клавиатуры не запускаются. Сделайте так, чтобы контейнер фокусировался, установив focusable и tabIndex или на окрашенном событии, установите фокус для любых фокусируемых элементов управления в нем.
focusable: true, //required
tabIndex: 1, //required
keyMap: {
A: {//65
scope: this,
//event: 'keydown',
handler: function () {
Ext.Msg.alert('key pressed', 'you have pressed a');
console.log("a pressed")
}
},
ENTER: { //13
scope: this,
//event: 'keypress',
handler: function () {
Ext.Msg.alert('key pressed', 'you have pressed enter');
console.log("enter pressed")
}
}
}
Проверьте это
в программе просмотра / редактирования скрипки с клавиатурной картой
Комментарии:
1. Большое вам спасибо за вашу помощь, это работает. Я все еще задаюсь вопросом, почему это работало в прошлом, но это уже не важно.
2. Может возникнуть какая-то проблема с SDK, попробуйте поднять билет на форуме клиентов..