要实现真正的无障碍,您将不得不放弃任何JavaScript中间件。但是不用担心,这并不像听起来那么严重:最简单的解决方案是使用重新路由链接。如果您曾经使用过google.com或duckduckgo.com等搜索引擎,您已经很熟悉这个过程了:与其链接到实际的URL,不如链接到通过无页面脚本代理的URL。您可以保证具有URL "http://our.domain.com/ref=http://the.actual.link.to.visit" 的锚点最终会成功重定向到实际站点,并且在解析重定向时,您可以附加任何所需的操作作为服务器端操作“当人们单击时”。
如果您认为依赖JavaScript,508合规性将会很困难。因此,为了实现无障碍:请尽量不要使用它。如果可以使用,请进行丰富,并确保在没有它的情况下仍然能够正常工作。
我基本上同意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,因为当引用(认为它被称为页面内引用)未定义时,焦点返回到浏览器框架,而不是停留在链接上。您需要编写一些处理程序将焦点返回到链接。