是否可以在 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?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以更改 Cocoa WebView 使用的 Javascript 引擎?
在 Javascript/JQuery 中选择单选选项时,是不是可以动态更改下拉列表的颜色或更改列表项的颜色?