对于508兼容页面上的javascript链接,HREF属性应该是什么?

时间:2013-02-05 19:31:29

标签: javascript anchor href section508

我知道这个问题: Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?包含对javascript链接的正确href内容的讨论。这与508合规性有何关系?当点击处理程序在javascript代码的其他地方定义时,有没有人知道javascript:void(0)是否可以接受?

2 个答案:

答案 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)是否可以接受?

我会提倡虚空,因为当一个引用(认为它被称为页内引用)没有定义时,焦点会回到浏览器框架,而不是留在链接上。您需要编写一些处理程序以将焦点返回到链接。