Интересно, есть ли у кого-то ответ на эту дилемму? Когда у вас есть автофокус, установленный на входном элементе, который не находится в секции посадки страницы, автофокусировка теряется, когда пользователь щелкает тег меню, чтобы перейти в этот раздел. (Например, раздел контакт там, где, вероятно, будет форма) ...HTML5 автофокус потерян на одностраничных сайтах
ответ
позволяет указать, что элемент формы должен иметь фокус ввода когда страница загружается, если пользователь переопределяет его, например, введя в себя один элемент управления . Только один элемент формы в документе может иметь атрибут автофокуса , который является булевым.
Предназначен для запроса пользовательских агентов, чтобы дать первоначальный фокус в поле формы при загрузке страницы, обеспечивая менее «встряске» и более контролируемый опыт пользователей вспомогательных технологий по сравнению с предыдущими решениями на основе JavaScript - которые часто «воровали «фокус после того, как пользователь уже начал перемещаться по документу.
Проблемы с помощью этого атрибута в вашем случае являются два fold-
событие загрузки страницы будет только стрелять один раз, и не срабатывает снова при перемещении фокуса на новую «страницу» внутренне в тот же документ
Недопустимо иметь более одного элемента внутри одного документа - в этом случае весь документ одной страницы - который имеет элемент автофокуса.
Что вам нужно сделать, это использовать native JavaScript focus method на элементе формы вашего определения в новой области видового экрана.
Если у вас есть ссылка на новый элемент или страницу «страница», вы можете использовать атрибут класса или данных, чтобы указать нужный элемент, используя querySelector method или jQuery.
Что-то как-
var firstElement = pageContainer.querySelector('.focus-field');
if (firstElement) {
firstElement.focus();
}
В качестве альтернативы вы могли бы просто использовать селектор элемента для выбора первой формы element-
var firstElement = pageContainer.querySelector('input, select');
if (firstElement) {
firstElement.focus();
}
Имейте в виду, что в этом случае оно является недействительным фокусировать скрытый ввод (по надежде очевидным причинам), и если вы захотите использовать это решение, лучше всего использовать querySelectorAll method и пропустить цикл - проверка того, что тип не скрыт и не выйдет из цикла на первом действительном элементе для фокусировки. Или просто используйте селектор атрибутов и выберите только входы типа текста.
Если вы используете jQuery, вы можете использовать not function, чтобы исключить скрытые входы от выбранных элементов.
благодарим вас за ответ, но, как вы можете видеть выше, у меня возникают проблемы с его внедрением. Я не очень разбираюсь в javascript, я боюсь (отсюда этот пост). – JiminSA
Нет. Я боюсь, что ваше решение не решило проблему на странице ссылки. Кажется, что он потерялся в рендеринг линии. (т. е. ссылка, установить фокус, рендеринг браузера ссылки, потерять фокус). Хорошо, я создам обходной путь для установки фокуса пользователем, нажав на страницу контактов. Но спасибо вам большое за вашу помощь! Можете ли вы рассказать мне, как я могу закрыть эту тему? – JiminSA
Я очень ценю ваш вход! – JiminSA
Я не уверен, что полностью соблюдаю ваш вопрос, но в целом, если вы используете автофокус для работы после загрузки страницы, вам нужно использовать JavaScript для явного задания фокуса, например http://jsfiddle.net/tj_vantoll/v5nujypn/. –
Благодарим за отзыв TJ. Я отредактировал заголовок для чтения одной страницы, а не на странице (опечатка), что, возможно, привело к тому, что вы не указали мое объяснение проблемы. – JiminSA
Мне нужен метод установки фокуса на первый элемент ввода формы в связанном разделе, потому что щелчок по ссылке, кажется, отрицает автофокус, который у меня есть на этом первом элементе. – JiminSA