Как я все размываю, сосредоточившись на документе?
с помощью JQuery/javascript
Это: $(document).focus()?
Ответы
Ответ 1
Метод .focus()
в элементе, обернутом jQuery, будет привязан к событию onfocus
, если функция передается в качестве первого параметра или запускает присоединенные обработчики событий без параметров.
Я не уверен, почему вы пытаетесь сделать то, что вы пытаетесь сделать, но если вы пытаетесь размыть текущий активный элемент, независимо от того, какой элемент он есть, вы можете использовать:
if ("activeElement" in document)
document.activeElement.blur();
Это не рекомендуется, так как это сделает reset порядок табуляции и потенциально раздражает пользователей, отправляющих клавиатуру.
Ответ 2
$().method()
запускает прослушиватели, связанные с этим методом. Если вам нужно вызвать функции на элементах dom, проиндексируйте объект jQuery.
то есть.
$(document)[0].focus()
Хотя вы бы просто не использовали document.focus
, вероятно, вопрос, на который стоит ответить.
Ответ 3
ОБНОВЛЕНИЕ: В Typescript вы должны просто привести к HTMLElement
следующим образом:
(document.activeElement as HTMLElement).blur();
// or
(<HTMLElement>document.activeElement).blur();
Оригинальный ответ ниже.
Принятый ответ не будет работать в TypeScript, потому что document.activeElement
является типом Element
, а не HTMLElement
, поэтому технически он не поддерживает blur()
. Приведенный ниже метод довольно хакерский, но он работает правильно.
Адаптировано из этого ответа:
const tmp = document.createElement('input');
document.body.appendChild(tmp);
tmp.focus();
document.body.removeChild(tmp);