Ключевая карта Extjs не работает с 6.5.1 modern

#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, попробуйте поднять билет на форуме клиентов..