我知道这个问题: Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?包含对javascript链接的正确href内容的讨论。这与508合规性有何关系?当点击处理程序在javascript代码的其他地方定义时,有没有人知道javascript:void(0)是否可以接受?
答案 0 :(得分:1)
这就是术语变得重要的地方 - 就可访问性而言,没有“javascript链接”这样的东西。有链接,这是纯粹的锚元素,并且有javascript行为,应该假设它们不可运行。
触发javascript的空锚元素(所以像href ='#'onclick ='...'这样的东西)不是链接,它是用于触发页面行为的UI元素。对于辅助功能,请不要滥用锚元素,使用具有正确ARIA角色的真实UI元素。
对于点击链接(其中包含“click anchor” - >“魔术JS被称为” - >“window.location更改为某个新页面”)然后请注意您是语义上的歪曲你的内容。即使你使用的是锚元素,你对它的使用也不是一个链接,因为它不是另一个资源的锚。就像在上面的情况一样,它实际上是一个按钮。页面位置最后更改的事实不会改变这一点。
对于真正的可访问性,您将不得不放弃任何中间的JavaScript。但不要担心,这比听起来要严重得多:最简单的解决方案是使用重新路由链接。如果您曾经使用过google.com或duckduckgo.com等,那么您已经熟悉了这一点:而不是链接到实际的URL,链接到通过无页面脚本代理的URL。您可以保证具有URL“http://our.domain.com/ref=http://the.actual.link.to.visit”的锚点最终会重定向到实际站点,并且您可以执行任何应该在“人们点击”作为服务器端操作时执行的操作解决重定向时。
如果您认为依赖JavaScript,那么508合规将很难。所以对于可访问性:积极尝试不要。如果您可以使用它,请确保在没有它的情况下仍能正常工作。答案 1 :(得分:0)
我基本同意迈克的看法。
这与508合规性有何关系?
关于508节的一个常见误解是“哦,我用JAWS(或者可能是NVDA)运行我的网站,并且很好。所以我很顺从。”第508条被认为涵盖所有残疾而不仅仅是失明。当你想到重型JavaScripting时,代理商倾向于使用“软件应用程序和操作系统”(1194.21)标准以及“基于Web的内部网和互联网信息和系统”(1194.22),因为他们更多地谈论UI元素。不幸的是,像WebAIM这样的地方否认了这一点。
因此,当包含1194.21时,标准可以更容易理解为“你把所有的@alts和<label>
都打开了,但这个网站/应用程序/系统可以用键盘吗?AKA是键盘可导航的?”你能看到那个看似链接的<span>
吗?
正如Mke所说,协助这一点的一种方法是使用ARIA。那么,<span>
现在必须是:
<span onclick="Clicky()" role="link">Link</span>
(参考:MDN)
现在回到你的问题:
我知道这个问题:JavaScript链接的Href属性:“#”或“javascript:void(0)”?当点击处理程序在javascript代码的其他地方定义时,有没有人知道javascript:void(0)是否可以接受?
我会提倡虚空,因为当一个引用(认为它被称为页内引用)没有定义时,焦点会回到浏览器框架,而不是留在链接上。您需要编写一些处理程序以将焦点返回到链接。