Метод HTMLElement: focus()
Базовая Широко поддерживается *
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
* Некоторые части этой функции могут иметь разную степень поддержки.
Метод HTMLElement.focus() устанавливает фокус на указанный элемент, если это возможно. Элемент с фокусом — это элемент, который по умолчанию будет получать события клавиатуры и аналогичные события.
По умолчанию браузер прокрутит элемент в область видимости после установки фокуса, а также может отобразить визуальное подтверждение фокуса (обычно, в виде «кольца фокуса» вокруг элемента). Представлены параметры для отключения автоматической прокрутки и принудительного отображения визуального подтверждения фокуса на элементах.
Синтаксис
focus() focus(options)
Параметры
optionsНеобязательный-
Необязательный объект для управления аспектами процесса установки фокуса. Этот объект может содержать следующие свойства:
preventScrollНеобязательный-
Булево значение, указывающее, будет ли браузер прокручивать документ, чтобы вывести новый элемент с фокусом в область видимости. Значение
falseдляpreventScroll(по умолчанию) означает, что браузер прокрутит элемент в область видимости после установки фокуса. ЕслиpreventScrollустановлено вtrue, прокрутка не будет выполнена. focusVisibleНеобязательный Экспериментальный-
Булево значение, которое должно быть установлено в
trueдля принудительного отображения или вfalseдля предотвращения визуального подтверждения фокуса на элементе. Если свойство не указано, браузер отобразит визуальное подтверждение, если посчитает, что это улучшит доступность для пользователей.
Возвращаемое значение
Ничего (undefined).
Примеры
Установка фокуса на поле ввода текста
В этом примере кнопка устанавливает фокус на поле ввода текста.
HTML
<input id="myTextField" value="Text field." /> <button id="focusButton">Click to set focus on the text field</button>
JavaScript
Код ниже добавляет обработчик событий, который устанавливает фокус на поле ввода текста при нажатии на кнопку. Обратите внимание, что большинство браузеров автоматически добавляют визуальное подтверждение (кольцо фокуса) для поля ввода с фокусом, поэтому код не устанавливает focusVisible в true.
document.getElementById("focusButton").addEventListener("click", () => {
document.getElementById("myTextField").focus();
});
Результат
Нажмите на кнопку, чтобы установить фокус на поле ввода.
Установка фокуса на кнопку
В этом примере показано, как установить фокус на элемент кнопки.
HTML
Сначала определяются три кнопки. Средняя и правая кнопки установят фокус на левую кнопку. Правая кнопка также укажет focusVisible.
<button id="myButton">Button</button> <button id="focusButton">Click to set focus on "Button"</button> <button id="focusButtonVisibleIndication"> Click to set focus and focusVisible on "Button" </button>
JavaScript
Код ниже настраивает обработчики событий клика для средней и правой кнопок.
document.getElementById("focusButton").addEventListener("click", () => {
document.getElementById("myButton").focus();
});
document
.getElementById("focusButtonVisibleIndication")
.addEventListener("click", () => {
document.getElementById("myButton").focus({ focusVisible: true });
});
Результат
Нажмите на среднюю или правую кнопку, чтобы установить фокус на левую кнопку.
Браузеры обычно не отображают визуальное подтверждение фокуса на элементах кнопок при программировании установки фокуса, поэтому эффект от нажатия на среднюю кнопку может быть незаметен. Однако если ваш браузер поддерживает опцию focusVisible, вы должны увидеть изменение фокуса на левой кнопке при нажатии на правую.
Установка фокуса с прокруткой и без
В этом примере показано действие установки фокуса с параметром preventScroll установленным в true и false (по умолчанию).
HTML
HTML определяет две кнопки, которые будут использоваться для установки фокуса на третью кнопку, которая находится вне области видимости.
<button id="focus_scroll">Click to set focus on off-screen button</button> <button id="focus_no_scroll"> Click to set focus on offscreen button without scrolling </button> <div id="container"> <button id="myButton" style="margin-top: 500px;">Button</button> </div>
JavaScript
Этот код устанавливает обработчик события клика на первой и второй кнопках для установки фокуса на последнюю кнопку. Обратите внимание, что первый обработчик не указывает опцию preventScroll, поэтому прокрутка к элементу с фокусом будет включена.
document.getElementById("focus_scroll").addEventListener("click", () => {
document.getElementById("myButton").focus(); // default: {preventScroll:false}
});
document.getElementById("focus_no_scroll").addEventListener("click", () => {
document.getElementById("myButton").focus({ preventScroll: true });
});
Результат
Нажмите на первую кнопку, чтобы установить фокус и прокрутить к кнопке, которая находится вне области видимости. Нажатие на вторую кнопку устанавливает фокус, но прокрутка отключена.
Спецификации
| Спецификация |
|---|
| HTML # dom-focus-dev |
Примечания
- Если вы вызываете
HTMLElement.focus()из обработчика события mousedown, вы должны вызватьevent.preventDefault()для предотвращения ухода фокуса с элементаHTMLElement - Поведение фокуса в отношении различных HTML-функций, таких как
tabindexили теневой DOM, которые ранее оставались неточными, были обновлены в октябре 2019 года. Дополнительную информацию см. на блог WHATWG .
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
focus |
1 | 12 | 1.5 | 8 | 3 | 18 | 4 | 10.1 | 1Если подключена физическая клавиатура и пользователь еще не взаимодействовал со страницей, вызовfocus() на элементе <input> не имеет эффекта (например, элемент не соответствует селектору :focus). |
1.0 | 4.4 |
options_focusVisible_parameter |
Нет | Нет | 104 | Нет | превью | Нет | 104 | Нет | Нет | Нет | Нет |
options_preventScroll_parameter |
64 | 17 | 68 | 51 | 15 | Нет | Нет | Нет | 15.5 | Нет | Нет |
См. также
-
HTMLElement.blurдля удаления фокуса с элемента. -
document.activeElementдля определения текущего элемента с фокусом.
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus