Javascript 如何让屏幕阅读器完成宣布表列名、暂停,然后宣布有关该列的补充信息?

Javascript 如何让屏幕阅读器完成宣布表列名、暂停,然后宣布有关该列的补充信息?,javascript,html-table,accessibility,Javascript,Html Table,Accessibility,我们有一个表,其中一列(将来可能还有其他列)有一个信息图标(ℹ️) 列名旁边。当您将鼠标悬停在列名上时,将显示一个工具提示,其中显示有关列中值含义的其他信息 为了使图标交互可以访问,我们将其设置为当列标题被聚焦时,启用一个热键来触发弹出窗口。唯一的问题是我们需要宣布列的热键,但是在图标上使用aria label,或aria descripeby,(位于列标题内,但与标题分开)使屏幕阅读器将其作为列标题的一部分发布 他们把它读回来,像这样: 度量按“i”键查看附加信息列标题第8列 我们希望它在读取

我们有一个表,其中一列(将来可能还有其他列)有一个信息图标(ℹ️) 列名旁边。当您将鼠标悬停在列名上时,将显示一个工具提示,其中显示有关列中值含义的其他信息

为了使图标交互可以访问,我们将其设置为当列标题被聚焦时,启用一个热键来触发弹出窗口。唯一的问题是我们需要宣布列的热键,但是在图标上使用
aria label
,或
aria descripeby
,(位于列标题内,但与标题分开)使屏幕阅读器将其作为列标题的一部分发布

他们把它读回来,像这样:

度量按“i”键查看附加信息列标题第8列

我们希望它在读取列信息后短暂暂停后阅读“按下‘i’键获取更多信息”,因为此文本仅在用户第一次遇到此特定表时才真正需要,并且在将来用户忘记交互时偶尔需要

我知道我可以通过
aria role=“status”
aria live=“little”设置一个全局
div
然后用我们需要的公告更新里面的文本,但是当我们使用类似的机制来加载微调器、状态更新等时,很可能会导致问题

我想知道是否有一个标准的方法来实现这一点,因为我自己还没有找到任何相关的东西

下面是一个只包含列标题的代码片段来说明这个问题。
.row{
宽度:400px;
高度:35px;
字体系列:无衬线;
}
.列标题{
宽度:100px;
高度:35px;
浮动:左;
边框:实心1px#ccc;
显示器:flex;
对齐项目:居中;
证明内容:中心;
位置:相对位置;
}
c图标
{
位置:绝对位置;
右:2px;
}

身份证件
名称
韵律学

您应该能够为列标题提供一个覆盖其内容的
aria label
属性,以及一个引用图标标签的
aria descripeby
属性

我相信这会导致屏幕阅读器在遍历列中的单元格时只宣布columnheader标签,并在聚焦时宣布其标签和描述


韵律学
请务必通读ARIA小部件并获取指导


您可以通过添加属性来增加键盘快捷键的可发现性。键盘快捷键可能无法与语音控制、开关控制、触摸设备上的屏幕阅读器配合使用,因此请确保也可以通过其他方式获取信息。

您应该能够为列标题提供一个
aria标签
att覆盖其内容的属性,以及引用图标标签的
属性

我相信这会导致屏幕阅读器在遍历列中的单元格时只宣布columnheader标签,并在聚焦时宣布其标签和描述


韵律学
请务必通读ARIA小部件并获取指导


您可以通过添加属性来增加键盘快捷键的可发现性。键盘快捷键可能无法与语音控制、开关控制、触摸设备上的屏幕阅读器配合使用,因此请确保也可以通过其他方式使用这些信息。

是否要将当前HTML的内容放在一起?这将使它变得非常容易您可能不需要做任何事情,说“metrics按“i”键获取更多信息”实际上没有什么错,因为这是预期的行为,您必须记住屏幕阅读器用户已经习惯了这一点(而且他们通常以300%或更高的阅读速度收听,因此您的暂停与他们的相关性较小!)@GrahamRitchie我刚刚用一个片段更新了这个问题,说明了这个问题。我把它简化成了列标题。你想把你当前的HTML放在一起吗?这会让你更容易提出最好的建议。你可能不需要做任何事,说“度量按下”实际上没有什么错“附加信息键”作为一种预期行为,您必须记住屏幕阅读器用户已经习惯了这一点(他们通常以300%或更高的阅读速度收听,因此您的暂停与他们关系不大!)@GrahamRitchie我刚刚用一个片段更新了这个问题,说明了这个问题。我把它简化为列标题。