在测试我们的网络应用程序时,我遇到了一个问题,尽管看起来非常简单,但我还是无法在Google上找到明确的答案。
问题在于屏幕阅读器(特别是iOS和OSX Safari中的Voice Over)会将应用程序中的每个内部链接读取为&#34; Visited Link&#34;甚至在用户点击其中任何一个之前。这些链接都具有相同的基础(类似http://domain.com/path/index.html#what-the-link-does),所以我的第一直觉是,由于这些链接都指向同一文件上的不同哈希,因此该链接正在访问,因为该文件已被访问过。< / p>
但是,这不是理想的行为。我们希望将所有链接简称为&#34; Link&#34;代替。所以这是我的问题:
是什么决定了链接是否被视为访问过?只是访问域名会导致它吗?访问特定文件会导致它吗?或者同一文件的不同哈希值是否应具有不同的访问状态?
有没有办法控制此行为并阻止链接被视为已访问?一些Aria参数可能?
答案 0 :(得分:2)
我可能误解了这个问题,但如果您的示例中的链接位于index.html
,则无法替换
http://domain.com/path/index.html#what-the-link-does
只需
#what-the-link-does
访问逻辑可能只是在没有考虑查询字符串/锚标记的情况下查看URI
答案 1 :(得分:0)
它依赖于实现。根据{{3}},
样式表作者可能滥用:link和:visited 伪类,用于确定用户在没有访问的情况下访问过哪些网站 用户的同意。
因此,UA可能会将所有链接视为未访问的链接或实施 在呈现访问时保留用户隐私的其他措施 和未访问的链接不同。
规范只要求:link
和:visited
互斥,但不指定方式。
答案 2 :(得分:0)
我认为您遇到的问题是关于可访问性的锚标记的误用。我假设您正在编写单个页面应用程序,并且指向不同视图的每个链接都是一个锚点。你应该使用按钮标签而不是一些CSS ninjitsu。这里有一篇关于这个问题的精彩文章:
http://www.karlgroves.com/2013/05/14/links-are-not-buttons-neither-are-divs-and-spans/