ShadowRoot: delegatesFocus 属性
delegatesFocus
是 ShadowRoot
接口的一个只读属性,如果 Shadow Root 代理焦点,则返回 true
,否则返回 false
。
如果为 true
,当 Shadow DOM 中不可聚焦的部分被点击,或在宿主元素上调用 .focus()
时,第一个可聚焦部分将获得焦点,并且 Shadow 宿主将获得任何可用的 :focus
样式。
焦点对于键盘用户(包括使用屏幕阅读器的用户)尤其重要。delegatesFocus
的默认行为是聚焦第一个可聚焦元素,如果该元素不是 Tab 键顺序的一部分(例如,具有 tabindex="-1"
属性的元素),或者如果一个更“重要”的可聚焦元素应该获得初始焦点(例如,第一个文本字段而不是它前面的“关闭”按钮),则这种默认行为可能不理想。在这种情况下,可以在应该获得初始焦点的元素上指定 autofocus
属性。谨慎使用 autofocus
属性,因为它可能会引入无障碍问题,例如绕过可能因焦点被设置到 DOM 顺序中后面的元素而被忽略的重要内容。
属性值最初是使用传递给 Element.attachShadow()
的对象的 delegatesFocus
属性设置的,或者使用 shadowrootdelegatesfocus
属性(当声明式创建 Shadow Root 时)设置的。
值
如果 Shadow Root 代理焦点,则为 true
,否则为 false
。
示例
js
let customElem = document.querySelector("my-shadow-dom-element");
let shadow = customElem.shadowRoot;
// ...
// Does it delegate focus?
let hostElem = shadow.delegatesFocus;
<template>
文档中的 带有代理焦点的声明式 Shadow DOM 示例演示了代理焦点的效果。
规范
规范 |
---|
DOM 标准 # shadowroot-delegates-focus |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。