首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络组件的方案重点

网络组件的方案重点
EN

Stack Overflow用户
提问于 2021-11-24 18:17:03
回答 1查看 318关注 0票数 1

如何正确地处理web组件的编程焦点?

在web组件上调用focus()应该集中在影子DOM中的适当元素。这意味着覆盖焦点方法。不过,这还不够,因为web浏览器不知道组件是交互式的。其结果之一是,单击指向元素的锚点将不会聚焦它,就像单击本地交互式html元素(如<button> )一样。可能还有其他我不知道的暗示。

我所知道的使元素交互的唯一方法是给它一个表索引值。但是tabindex="0"将创建一个额外的制表符,而tabindex="-1"将删除组件中的所有制表符。所以这两样都不管用。下一步是设置tabindex="0",然后在focus()blur()上切换值。在我看来,为了满足这样一个基本需求(使web组件具有适当的交互性和可访问性),我不得不做所有这些烦琐的工作,这让我觉得很疯狂。我是不是遗漏了什么?有没有更好的解决办法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-28 15:41:57

我确实错过了什么。Web有一个特定的API来实现这个目标:delegatesFocusMDN文档

设置为true

  • 在主机元素上调用focus()会使阴影DOM中的第一个可聚焦元素进入焦点。
  • 单击组件内部的任何非焦点元素也是如此。
  • 制表符序列不变。
  • 应用主机上的:focus样式

它是web组件规范的一部分,所以不用担心支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70101091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档