- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 NVDA 屏幕阅读器中遇到问题。它正在阅读标题两次。以下是 HTML 结构。
<article>
<figure>
<div id="placeholder">
<a id="thumbnail" href="" aria-hidden="true" tabindex="-1" class="focused">
<img src="/static-files/img.png" width="700" height="400" alt="">
</a>
</div>
<figcaption>
<h3 class="h6">
<a href="/stories/sample.html"> Example Title </a>
</h3>
<small>
September 24, 1999
</small>
</figcaption>
</figure>
</article>
此外,屏幕阅读器在聚焦时多次读取可点击在链接上。
如果有人能提出解决方案,那将是一个很大的帮助。我是辅助功能的初学者。
提前致谢:)
最佳答案
问题不在于 NVDA,而在于浏览器。您使用的是哪种浏览器?当使用带有 firefox 和 chrome 的屏幕阅读器时,我听到了两次“Example Title”,但没有使用 Internet Explorer。我使用 NVDA 还是 JAWS 都没关系。是浏览器导致了问题。
firefox 和 chrome 都在处理 <figcaption>
作为group Angular 色。如 html spec for figcaption 中所述,这是此元素的有效 Angular 色但通常情况下,如果 html 规范没有说明默认 Angular 色应该是什么,浏览器应该不选择默认 Angular 色。例如,<section>
元素说 the default role is region
但它可以分配其他几种类型的 Angular 色。如果 html 开发人员没有分配其他 Angular 色,则然后默认 region
应该使用 Angular 色。
<figcaption>
,另一方面,不是否有默认 Angular 色,浏览器不应选择 group
为你。 <figcaption>
是有道理的应该是一个组 Angular 色,所以也许 html 规范应该更改为这样说,但在那之前,浏览器选择默认 Angular 色是不正确的。
现在,如果一切都有意义的话,firefox 和 chrome 正在(错误地)为您选择一个组 Angular 色,当您使用 tab 键导航到一个组时,组名首先被宣布然后接下来宣布您登陆的任何元素。
在这种情况下,组名是 <figcaption>
中包含的所有文本。 .这意味着链接文本“示例标题”以及日期“1999 年 9 月 24 日”。然后您的焦点移动到的元素是标题中包含的链接,因此链接文本(正确)被宣布为“示例标题”。所以总而言之,我听到“Example Title September 24, 1999 grouping
, Example Title, link, heading level 3
”。
也就是说,您会听到两件事,组名和获得焦点的元素。
如果您使用屏幕阅读器 DOM 导航键(向上/向下键)进行导航,那么您不会听到您的链接文本两次。您分别导航到每个元素。
最终结果是您不必做任何事情来解决这个问题。您的代码是正确的,它是浏览器中的错误。然而,如果你想破解这个问题,你可以给 <figcaption>
group
的具体作用并且不给它一个aria-label
.这可以防止您的 figcaption 被解读为分组标签,但同样,我不建议您这样做。
如果你很好奇为什么这个 hack 会起作用,如果你给元素一个 Angular 色但没有给 Angular 色一个标签(通过 aria-label
或 aria-labelledby
),那么大多数浏览器将不会显示该元素的 Angular 色所以屏幕阅读器不会阅读它。
更新:
我忘了评论“可点击”的问题。这就是 NVDA 让您知道当点击未被正常处理时,元素或其父元素或祖先树上的某个元素 具有点击处理程序。例如,如果您有一个 <div>
或 <h2>
或 <p>
或其他一些具有 onClick 处理程序的非交互元素,这些通常不是交互元素,因此 NVDA 让您知道您可以选择该元素。
您可以在 https://github.com/nvaccess/nvda/issues/7430#issuecomment-318984375 上查看更多详细信息
关于javascript - NVDA 屏幕阅读器在嵌入链接时阅读标题两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52690420/
我会保持简短:我正在尝试循环遍历画廊的 xml 文档。我有一个应该可以工作的脚本,但没有。谁能告诉我哪里做错了? 我不想让它变得更长,因为问题很简单,并且从昨天开始就一直在思考这个问题,这是我得到的最
我正在使用 PHPExcel从 Excel 工作表中读取数据并存储在 mysql 表中,直到现在我能够上传 .xls 和 .xlsx 文件,在上传 xls 后我得到了下面的数据表结构 name
我正在构建一个在线 Rss 阅读器。我希望能够与文章标题和描述一起显示图像。 我正在使用谷歌提要 API 从 CNN ( http://rss.cnn.com/rss/edition.rss ) 读取
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 10年前关闭。 Improve this
我正在开发 BB 应用程序,我需要在其中实现 QR 阅读器或扫描仪。我知道 RIM 在 OS6 和 ZXing 中支持它的库,但实际上我需要阅读一个示例,说明如何在我的代码中实现它。 最佳答案 你可以
我将工作应用程序的 clojurescript 版本升级到 0.0-2030,突然读取器/读取字符串返回空值,例如: (js/alert (str "reader returned [" (read
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我想编写一个小应用程序,可以从任何 RSS 提要 URL 中提取 RSS 提要。如果有人能给我关于如何实现这一目标的非常基本的帮助? 我刚刚开始接触 AJAX 之类的东西,所以任何帮助将不胜感激。 谢
我已经创建了一个 RSS 阅读器,如下教程所示: http://techiedreams.com/android-rss-reader-part-3-action-bar-with-animated-
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
请帮我解决这个问题。我是 extJs 的新手,我需要一点帮助。我有这个代码 Ext.onReady(function() { var datesStore = new Ext.data.JsonSt
我需要一个 CSV 读取器,它将输出 NxN(加权)邻接矩阵(N 从一开始就不知道)。当然,我可以使用 strtok() 和 friend 来解析它,但是如果某些东西已经可用并且足够完整,我将不胜感激
实际上我想开发一个 EPUB 格式的图书列表(列表将从网络服务中检索)。 当选择一个项目(一本书)时,它应该会提示手机中安装了可用的 epub 阅读器。类似于“分享”将调用 SMS、FB、Twitte
我是 Java 的新手,但真的想在这方面做得更好。我正在尝试编写一个简单的 RSS 阅读器。这是代码: import java.io.*; import java.net.*; public clas
我按照一个简单的教程 (http://www.cse.nd.edu/courses/cse40814/www/RSS_Android.pdf) 将给定 URL 中的 RSS 提要读取到 ListVie
最近我一直在尝试学习如何在 Xcode 6 beta 中制作 RSS 阅读器应用程序的教程,尽管我使用的是 Xcode 6.1。我遇到了一行似乎是错误的。 完整代码为: import UIKit cl
代码使用条形码扫描仪检查条形码。Search_code 由用户(键盘)填写,insert_code 由条码扫描仪自动填写。目前,如果在条形码扫描仪值中引入两个输入,则代码可以工作,这对我来说不起作用。
是否可以通过编程方式更改 Windows 中的默认 PDF 阅读器。 例如, 如果我的机器中的默认阅读器是“Foxit”,但我需要在 C# 或 javascript 中将默认阅读器应用程序更改为“Ad
我想将 CSV 文件的每一行与其自身以及一列中的每一行进行比较。 例如,如果列值是这样的: 值_1 值_2 值_3 代码应该选择 Value_1 并将其与 Value_1(是的,也与它本身)、Valu
我有以下片段 import csv data = {} with open('data.csv', 'rb') as csvfile: spamreader = csv.reader(csvf
我是一名优秀的程序员,十分优秀!