Исправление ошибки в Google Chrome для ExtJS 6.2.* STATUS_ACCESS_VIOLATION
Если Вы столкнулись с данной ошибкой (STATUS_ACCESS_VIOLATION) при разработке на ExtJS в Chrome
Это связанно с миксином 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'))