是否可以在 JavaScript 中更改 document.activeElement?

Posted

技术标签:

【中文标题】是否可以在 JavaScript 中更改 document.activeElement?【英文标题】:Is it possible to change document.activeElement in JavaScript? 【发布时间】:2011-04-29 01:46:20 【问题描述】:

是否可以在 javascript 中以编程方式更改 document.activeElement 属性的值?

【问题讨论】:

【参考方案1】:

在 IE 中,使用要成为活动元素的元素的 setActive() 方法。在其他支持activeElement的浏览器中,可以使用元素的focus()方法,只要元素能够接收焦点(表单元素、可编辑元素、设置tabindex的元素)。

如果你想将 activeElement 设置回默认值(大多数浏览器中的 <body> 元素),只需调用活动元素的 blur() 方法即可:

document.activeElement.blur();

【讨论】:

我们以jquery.com的页面为例。当您进入页面并在 FireBug 中检查 document.activeElement 时,您会得到“”。然后假设您更改 activeElement 做一些链接元素 ()。之后如何将 activeElement 重置为前一个(正文)。我不能使用 document.body.focus(); 只记得为 div 元素设置 tabindex="-1" @g00fy:什么情况下? @TimDown 当你想关注“不可聚焦”的 DOM 节点时,比如一个 div。如果tabindex="-1" 设置在常规标签中,则可以用.focus() 聚焦【参考方案2】:

你可以只.focus()你想要的元素,它将是新的document.activeElement

【讨论】:

element.focus 仅在定义了 element.tabindex 时才在 Chrome 55 中有效。默认情况下,div 没有 tabindex,因此默认情况下 div.focus() 无效。在调用焦点之前的任何时候,只需将 element.tabindex 设置为某个值,例如“-1”。然后调用 element.focus。您将看到 now element === document.activeElement,这意味着像上/下这样的滚动键将应用于当前活动的元素。令人困惑! 看起来应该是tabIndex 我的 activeElement 是一个 iframe,这对我在 Chrome 84 上不起作用。.blur() 做到了。

以上是关于是否可以在 JavaScript 中更改 document.activeElement?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript isFinite() 函数

是否可以更改 Cocoa WebView 使用的 Javascript 引擎?

在 Javascript/JQuery 中选择单选选项时,是不是可以动态更改下拉列表的颜色或更改列表项的颜色?

vscode更改javascript缩进大小

是否可以在 JSON 中更改页面 webmethod 响应,删除 .d 节点?

确定 JavaScript 语法在 ACE 的更改处理程序中是不是有效