滥用 <A> 标签

Abuse of <A> tag

据我了解,< A >标签就是"anchor"标签,它有三个用途:

1) 描述并命名页面上的项目 <a name="foo"/>

2) 单击时将用户转到另一个页面 <a href="http://www.yahoo.com">Yahoo!</a>

3) 单击时将用户转到同一页面中的另一个位置 <a href="#foo">Foo!</a>

有人向我解释说 < a > 标签是唯一一个跨浏览器普遍处理的 touch/click 事件,我们需要劫持它以实现这种兼容性。我对此表示怀疑 - 如果浏览器能够显示使用 JQuery(和 CSS2/3!)的网站,则浏览器还应该能够处理自定义 onclick() 事件而不需要锚点标签。

目前,使用<A>标签处理所有可点击事件已成为项目的标准操作流程。在代码中,我们必须防止默认(否则页面跳转到顶部),然后处理我们愉快的事情。我强烈认为这是在滥用标签的用途,就像某些框架如何劫持 <i> 标签来显示图标一样。

IMO,如果你想要一个可选的 LI 列表,你可以为每个 LI 项目分配一个 "onclick" 事件处理程序。由于没有默认操作,因此无需担心防止默认操作。

由于这是 Whosebug,我需要回答一个问题:当前规定的这种行为是否滥用了 < A > 标签的用途?

编辑:出于可访问性的目的(能够通过对象切换,A 允许但 LI 不允许),在 LI 上设置 TabIndex 的 Whosebug post 似乎很有希望:

What is the HTML tabindex attribute?

使用 jQuery 你可以 on('click',callback) 任何元素。

仅使用 a 元素可能是出于可访问性目的(例如,告诉屏幕阅读器该元素将执行一些有趣的操作)。

是的,这是一种滥用。

我会向他们解释 Semantic HTML。每个标签都有其用途和使用环境。

顺便说一下,使用 <i> 图标不一定是滥用。 CSS 强烈建议使用 italic 样式。