【问题标题】:Is an empty element (such as <a href="#">) valid for accessibility purposes?空元素(例如 <a href="#">)是否对可访问性有效?
【发布时间】:2016-10-25 04:21:28
【问题描述】:

我管理的几个网站在其主页上使用精选文章滚动条,允许用户单击前进或后退箭头,以便在保持在同一页面上的同时查看下一篇文章的标题和简介。

我使用 WAVE 的可访问性检查器,任何具有此特定插件的网站都会返回错误,因为在代码中有一个空链接,写为 &lt;a href="#"&gt;。有没有办法解决?我已经定义了一个 title 属性,但 # 仍然导致空链接错误出现。

我在一些地方看到这是完全可以接受的,而另一些地方则声称这是一个问题。实际的答案和潜在的解决方法是什么?

【问题讨论】:

标签: html accessibility


【解决方案1】:

Some source 建议 &lt;a href="#"&gt;link&lt;/a&gt; 将是无效的超文本引用,但实际上该问题仅存在于 WCAG 2 范围之外的非 JavaScript 浏览器中。这不是您的问题,因为 这不是 WAVE 认为的错误。

这里的问题是你有一个空链接内容 &lt;a href="#"&gt;&lt;/a&gt; 并且添加title 属性不满足WAVE算法。

如果您唯一关心的是满足 WAVE,只需在链接中添加一些内容并使用任何 CSS 技巧来隐藏这些内容。

【讨论】:

  • 感谢所有的建议,我通过删除 href 属性让它工作了。 :-)
  • @NiamLeeson 请注意,删除 href 属性可能会导致屏幕阅读器不兼容不宣布链接
  • 那么,Adam,您认为最好的解决方案是上述
  • 您的问题的全球答案是您必须进行文本替换。无论您使用a[href] 还是button。使用a[href] 而不是button 对于屏幕阅读器来说不是问题,唯一的例外是您会听到“链接”而不是“按钮”,这没什么大不了的。此外,您不应信任可访问性“验证器”,并使用屏幕阅读器进行测试。
  • 对于某些屏幕阅读器用户来说,这是一件大事。当他们听到链接时,他们期望进行某种互动。因此,他们可以选择在新窗口中打开链接。他们还可以从&lt;button&gt; 提供的额外键盘交互中受益。我鼓励你使用最合适的元素。
【解决方案2】:

&lt;a href="#"&gt; 更改为 &lt;button&gt; 并将您的事件处理程序放在上面。

关于哪些元素属于哪里的更多上下文......

控件是否将我带到另一个页面?使用锚

如果通过键盘或语音(或在此处插入新颖的交互方法)单击、轻敲或激活时,用户被快速转到另一个 URL(包括同一页面上的锚点),则使用 &lt;a href="[URL]"&gt;。确保你使用了href 属性,并且它有一个真实的 URL,而不是“#”(否则你可能依赖于 JavaScript,这对于超链接来说根本不是必需的)。如果href 只指向一个“#”,那么您可能做错了。如果它指向一个命名锚点作为渐进增强工作的一部分,那么这是完全有效的。

控件是否改变了当前页面上的某些内容?使用按钮

如果激活后,用户没有从页面移动(或移动到页面内的锚点),而是呈现一个新视图(消息框、布局更改等),则使用 @ 987654326@。虽然您可以使用&lt;input type="button"&gt;,但您更有可能会与预先存在的样式和后续开发人员(如我)发生冲突。

控件是否提交表单域?使用提交

如果激活后,用户输入的信息(通过手动输入或通过选择屏幕上的项目)被发送回服务器,则使用&lt;input type="submit"&gt;。这最好住在&lt;form&gt; 中。如果您需要更多样式控制或必须嵌入的不仅仅是简单的文本字符串,请改用&lt;button type="submit"&gt;

键盘注意事项

想一想键盘用户。按下回车键可以触发超链接。但是可以通过按回车键或空格键来触发真正的按钮。当超链接具有焦点并且用户按下空格键时,页面将滚动一屏。如果没有更多可以滚动的内容,那么用户就什么也没有体验到。给定一组看起来相同的界面元素,如果其中一些使用空格键而另一些不使用,您就不能指望用户对页面的行为有多大信心。

我认为还值得一提的是,由空格键触发的事件仅在释放键时触发,而使用 Enter 键将在您按下键时触发事件(在释放之前)。

【讨论】:

  • 感谢所有出色的输入,非常感谢。和 aardrian,我不知道你为什么被否决。很有帮助的东西。明天我会尝试向它添加一个
  • 查看脚本是否专门寻找a,如果是,则将其删除(或替换为button)。
  • @aardrian 反对您的人没有阅读您的答案。不要问,继续做好你的工作。非常感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 2012-07-01
  • 1970-01-01
  • 2012-07-20
相关资源
最近更新 更多