Деякі відповіді тут пропонують використовувати setTimeoutдля затримки процесу фокусування на цільовому елементі. В одному з них згадується, що мета знаходиться всередині модального діалогу. Я не можу далі коментувати правильність setTimeoutрішення, не знаючи конкретних деталей, де воно було використано. Однак я подумав, що тут слід надати відповідь, щоб допомогти людям, які натрапляють на цю тему так само, як я
Простий факт справи полягає в тому, що ви не можете зосередитись на елементі, який ще не видно . Якщо ви зіткнулися з цією проблемою, переконайтеся, що ціль справді видна, коли робиться спроба її фокусування. В моєму випадку я щось робив у цьому напрямку
$('#elementid').animate({left:0,duration:'slow'});
$('#elementid').focus();
Це не вийшло. Я тільки зрозумів , що відбувається , коли я виконав $ ( «# elementid»). Фокус () `з консолі , який зробив роботу. Різниця - у моєму коді вище цілі немає впевненості, що ціль буде незмінною, оскільки анімація може бути не повною . І там криється підказка
$('#elementid').animate({left:0,duration:'slow',complete:focusFunction});
function focusFunction(){$('#elementid').focus();}
працює так, як очікувалося. Я теж спочатку вкладав setTimeoutрішення, і він теж працював. Однак довільно обраний тайм-аут зобов'язаний порушити рішення рано чи пізно залежно від того, наскільки повільно хост-пристрій йде про процес забезпечення видимості цільового елемента.