在符合508标准的页面上,JavaScript链接的HREF属性应该是什么?

5

3
在阅读了更多内容并查看了此链接http://icant.co.uk/articles/pragmatic-progressive-enhancement/#build之后,似乎更正确的方法是使用实际链接到非JavaScript页面,并使用某种类型的“preventDefault”来阻止链接发生。这听起来正确吗? - Tim
2个回答

1
这里术语变得重要 - 就可访问性而言,不存在“javascript链接”这样的东西。有链接,即未经修改的锚元素,还有应该假定不可运行以实现可访问性的javascript行为。
触发javascript的空锚元素(例如href = '#' onclick ='...')不是链接,而是用于触发页面行为的UI元素。对于可访问性,请不要滥用锚元素,而是使用具有正确ARIA角色的真正UI元素。
对于点击链接(执行类似“单击锚点”->“调用魔法JS”->“window.location更改为某个新页面”的操作),请注意您正在语义上错误地表示内容。即使您使用的是锚元素,但您的使用方式并不是作为链接,因为它不是指向另一个资源的锚点。就像在上面的情况下一样,它实际上是一个按钮。页面位置最终更改的事实并不会改变这一点。

要实现真正的无障碍,您将不得不放弃任何JavaScript中间件。但是不用担心,这并不像听起来那么严重:最简单的解决方案是使用重新路由链接。如果您曾经使用过google.com或duckduckgo.com等搜索引擎,您已经很熟悉这个过程了:与其链接到实际的URL,不如链接到通过无页面脚本代理的URL。您可以保证具有URL "http://our.domain.com/ref=http://the.actual.link.to.visit" 的锚点最终会成功重定向到实际站点,并且在解析重定向时,您可以附加任何所需的操作作为服务器端操作“当人们单击时”。

如果您认为依赖JavaScript,508合规性将会很困难。因此,为了实现无障碍:请尽量不要使用它。如果可以使用,请进行丰富,并确保在没有它的情况下仍然能够正常工作。


0

我基本上同意Mike的观点。

这与508合规有什么关系?

关于第508条款,一个常见的误解是“哦,我用JAWS(或者可能是NVDA)运行我的网站,一切都很好。所以我是合规的。”第508条款理论上应该涵盖所有残障,而不仅仅是盲人。当你进入到大量JavaScript编程时,机构倾向于使用“软件应用程序和操作系统”(1194.21)标准,除了“基于Web的内部网络和互联网信息和系统”(1194.22),因为它们更多地涉及UI元素。像WebAIM这样的地方,不幸的是否认了这一点。

因此,当包括1194.21时,标准可以更容易地阅读为“您放置了所有@alts和

正如Mke所说,帮助解决这个问题的一种方法是使用ARIA。因此,那个现在必须是:

<span onclick="Clicky()" role="link">Link</span>

(参考: MDN)

现在回到你的问题:

我知道这个问题:JavaScript链接的Href属性:“#”还是“javascript:void(0)”?有人知道当在JavaScript代码的其他地方定义了单击处理程序时,javascript:void(0)是否可接受?

我会支持使用void,因为当引用(认为它被称为页面内引用)未定义时,焦点返回到浏览器框架,而不是停留在链接上。您需要编写一些处理程序将焦点返回到链接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接