В документации указано, что MessageBox является асинхронным:
Обратите внимание, что MessageBox
асинхронный. В отличие от обычного
Предупреждение JavaScript (которое остановит
выполнение браузера), показывая
MessageBox не будет вызывать код
стоп. По этой причине, если у вас есть
код, который должен запускаться только после некоторого
отзывы пользователей из MessageBox, вы
необходимо использовать функцию обратного вызова (см.
параметр функции для шоу для более
подробнее).
Итак, ваш focus () выполняется сразу после вызова Ext.MessageBox.alert, а не тогда, когда пользователь отклоняет его: когда пользователь нажимает, чтобы закрыть предупреждение, фокус снова меняется.
Вместо этого вы можете попробовать использовать обычное оповещение JavaScript (), которое является синхронным.