网站搜索

javascript - 如果另一个元素已经获得焦点,如何使 body 元素获得焦点?


如果另一个元素已经获得焦点,如何以编程方式将焦点放在 body/document.body 元素上?

调用 document.body.focus() 似乎不起作用,可能是因为 body 不是可聚焦的。

MDN 说

HTMLElement.focus() 方法会将焦点设置到指定的元素上,如果它可以被聚焦。

答案#1

如果你先对当前聚焦的元素调用 .blur(),然后紧接着调用 window.focus(),Chrome 和 Firefox 都会将焦点设置到 document.body 元素上。

完整解决方案(TypeScript):

    private focusBody = () => {
        if (document.activeElement instanceof HTMLElement) {
            document.activeElement.blur();
        }
        window.focus();
    };