文档:activeElement 属性

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

activeElementDocument 接口的一个只读属性,它返回 DOM 中正在接收键盘事件(如 keydownkeyup)的 Element。这通常等同于具有焦点的元素。

哪些元素可以获得焦点取决于平台和浏览器当前的配置。例如,在 Safari 中,遵循 macOS 的行为,默认情况下,非文本输入元素无法获得焦点,除非在“系统设置”中启用了“完全键盘访问”设置。

通常,用户可以通过按 Tab 键在页面中具有焦点的元素之间移动焦点,并使用 SpaceEnter 等键盘手势来模拟对具有焦点元素的点击。

注意: 焦点(哪个元素正在接收用户输入事件)与选择(文档当前被高亮显示的部分)是不同的。你可以使用 window.getSelection() 来获取当前选择。

当前具有焦点的最深层 Element

  • 如果具有焦点的元素位于当前文档内的 shadow tree 中(例如,具有焦点的元素在 iframe 内部,而调用该属性的 document 包含该 iframe),那么它将是该树的根元素(在此示例中,就是那个 iframe)。
  • 如果具有焦点的元素位于不属于当前文档的文档树中(例如,具有焦点的元素在主文档中,而调用该属性的 document 是一个嵌入的 iframe),那么它将是 null
  • 如果没有元素具有焦点,则此属性返回 Document.bodyDocument.documentElement

示例

HTML

html
<p>Select some text from one of the text areas below:</p>

<form>
  <textarea name="ta-example-one" id="ta-example-one" rows="7" cols="40">
This is Text Area One. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt, lorem a porttitor molestie, odio nibh iaculis libero, et accumsan nunc orci eu dui.</textarea
  >
  <textarea name="ta-example-two" id="ta-example-two" rows="7" cols="40">
This is Text Area Two. Fusce ullamcorper, nisl ac porttitor adipiscing, urna orci egestas libero, ut accumsan orci lacus laoreet diam. Morbi sed euismod diam.</textarea
  >
</form>

<p>Active element ID: <em id="output-element"></em></p>
<p>Selected text: <em id="output-text"></em></p>

JavaScript

js
function onMouseUp(e) {
  const activeTextarea = document.activeElement;
  const selection = activeTextarea.value.substring(
    activeTextarea.selectionStart,
    activeTextarea.selectionEnd,
  );

  const outputElement = document.getElementById("output-element");
  const outputText = document.getElementById("output-text");
  outputElement.textContent = activeTextarea.id;
  outputText.textContent = selection;
}

const textarea1 = document.getElementById("ta-example-one");
const textarea2 = document.getElementById("ta-example-two");
textarea1.addEventListener("mouseup", onMouseUp);
textarea2.addEventListener("mouseup", onMouseUp);

结果

规范

规范
HTML
# dom-documentorshadowroot-activeelement-dev

浏览器兼容性

另见