Исправление ошибки в Google Chrome для ExtJS 6.2.* STATUS_ACCESS_VIOLATION

Если Вы столкнулись с данной ошибкой (STATUS_ACCESS_VIOLATION) при разработке на ExtJS в Chrome chrome_status_access_violation.jpg

Это связанно с миксином Focusable, а именно методом activateFocusableContainer, в котором есть присваивание значения аттрибуту tabIndex, которого не существует.

Для решения данной проблемы, нужно использовать данный override:


Ext.define(null, {
    override:'Ext.util.FocusableContainer',
    privates:{
      activateFocusableContainer: function(activate) {
            var me = this,
                beforeGuard = me.tabGuardBeforeEl,
                afterGuard = me.tabGuardAfterEl;
            if (!me.rendered || me.destroying || me.destroyed || !beforeGuard || !afterGuard) {
                return;
            }
            activate = activate != null ? activate : true;
             if (activate) {
                if(beforeGuard.dom.hasAttribute('tabIndex') && afterGuard.dom.hasAttribute('tabIndex')) {
                    beforeGuard.dom.setAttribute('tabIndex', me.activeChildTabIndex);
                    afterGuard.dom.setAttribute('tabIndex', me.activeChildTabIndex);
                }
            } else {
                 if(beforeGuard.dom.hasAttribute('tabIndex') && afterGuard.dom.hasAttribute('tabIndex')) {
                     beforeGuard.dom.removeAttribute('tabIndex');
                    afterGuard.dom.removeAttribute('tabIndex');
                }

            }
        },

    }
}, function() {
        Ext.Object.each(Ext.ClassManager.classes, function(name, cls) {
          if(cls && cls.prototype && cls.prototype.hasOwnProperty('activateFocusableContainer')) {
              cls.prototype.activateFocusableContainer = this.prototype.activateFocusableContainer;
          }
        }, this);
    });

В нем добавлена проверка на существование данного аттрибута.

 if(beforeGuard.dom.hasAttribute('tabIndex') && afterGuard.dom.hasAttribute('tabIndex'))