7

我在测试我们的 web 应用程序的可访问性时遇到了一个问题,尽管看起来很简单,但我无法在 Google 上找到明确的答案。

问题是屏幕阅读器(特别是 iOS 和 OSX Safari 中的 Voice Over)甚至在用户点击其中任何一个之前,都会将应用程序中的每个内部链接读取为“已访问链接”。链接都具有相同的基础(类似于http://domain.com/path/index.html#what-the-link-does),所以我的第一直觉是,因为这些链接都指向相同的不同哈希文件链接被视为已访问,因为该文件已被访问。

但是,这不是所需的行为。我们希望所有链接都被称为“链接”。所以这是我的问题:

  1. 是什么决定了链接是否被视为已访问?只是访问该域会导致它吗?访问特定文件会导致它吗?或者同一个文件的不同哈希应该有不同的访问状态?

  2. 有什么方法可以控制这种行为并防止链接被读取为已访问?可能是一些 Aria 参数?

4

3 回答 3

2

我可能误解了这个问题,但如果你的链接index.html在你的例子中,你能不能替换

http://domain.com/path/index.html#what-the-link-does

简单地

#what-the-link-does

访问的逻辑可能只查看 URI 而不考虑查询字符串/锚标记

于 2015-10-26T13:16:51.430 回答
0

它依赖于实现。根据规范

样式表作者可能会滥用 :link 和 :visited 伪类来确定用户在未经用户同意的情况下访问了哪些站点。

因此,UA 可以将所有链接视为未访问的链接,或实施其他措施来保护用户的隐私,同时以不同的方式呈现已访问和未访问的链接。

规范只要求和是互斥的,但没有具体说明如何:link:visited

于 2015-10-22T20:07:45.230 回答
0

我认为您遇到的问题是在可访问性方面误用了锚标记。我假设您正在编写一个单页应用程序,并且指向不同视图的每个链接都是一个锚点。您应该使用按钮标签而不是一些 CSS ninjitsu。这里有一篇关于这件事的精彩文章:

http://www.karlgroves.com/2013/05/14/links-are-not-buttons-neither-are-divs-and-spans/

于 2015-10-26T16:44:53.777 回答