javascript - 从反应组件的 HTML 中删除“role=banner”?
问题描述
我收到一个可访问性错误,告诉我“横幅地标包含在另一个地标中”。在我的例子中,它在标题中,看起来像这样:
<header role="banner" class="pf-c-page__header">
但是,此标头从一个名为 的导入反应组件呈现PageHeader
,其返回方法如下所示:
return (
<header role="banner">
...
是否可以仅通过修改我使用组件的 JavaScript 来阻止横幅呈现?我认为我无法更改实际组件。
例如,我可以在此处添加一些可以删除“role=banner”HTML 属性的内容吗?
return (
<PageHeader
/>
解决方案
role="banner"的规范规定,假设您有嵌套(或)小节,您可以拥有多个banner
元素:document
application
因为
document
andapplication
元素可以嵌套在 DOM 中,所以它们可能有多个banner
元素作为 DOM 后代,假设每个元素都与不同的document
节点相关联,或者通过 DOM 嵌套(例如,document
withindocument
)或通过使用aria-owns
属性。
所以你可以在嵌套document
标签中插入你的反应组件
<body>
<header role="banner" class="pf-c-page__header">...</header>
<div role="document">
<header role="banner">...</header>
</div>
</body>
这并不意味着您用于测试可访问性的工具可以正确处理它。
推荐阅读
- d3.js - 时间序列图过滤多线图(为多个数据项渲染多线)
- powerbi - 使用 DirectQuery 过滤重复出现的值 Power BI
- python - 按月对数据框进行排序并按计数分组
- c# - 有没有办法在调试器在 Visual Studio 2019/C# 中暂停之前运行代码?
- android - E/BitmapFactory:无法解码流:java.io.FileNotFoundException:下载/my_file.JPEG(没有这样的文件或目录)
- javascript - ref.update() 删除省略的键 - 就像 .set() 一样工作?
- android - 我在哪里将注册按钮放在片段中(对 Firebase Realtime DB 的异步 DB 调用太慢导致应用程序崩溃)
- strapi - VS Code:在 127.0.0.1:9229 上启动检查器失败:地址已在使用中
- c# - 如何将 ViewModel 本地化添加到 Blazor?
- android - URL更改时android WebView闪烁白色