【问题标题】:Semantically correct way to define an empty anchor [duplicate]定义空锚点的语义正确方法[重复]
【发布时间】:2015-02-10 08:02:53
【问题描述】:

如果我想使用触发 javascript 回调但不使窗口导航到另一个位置的 achor,我想知道以下结构的哪种形式在语义上是正确的:

javascript:

window.addEventListener('load', function() {
    document.getElementById('AuxAnchor').addEventListener('click', function(e) {
        // Do something
        e.preventDefault(); // Don't navigate to anywhere
    }, false)
}, false);

HTML:

定义空值的 href 属性:

<a id="AuxAnchor" href="">Click me</a>

定义的 href 属性缺少文档内 ID:

<a id="AuxAnchor" href="#">Click me</a>

未定义的 href 属性:

<a id="AuxAnchor">Click me</a>

请注意,在后者(未定义的 href 属性)中,我必须通过使用样式来模拟超链接外观,但这基本上只是一个外观问题,我一点也不担心所以。

【问题讨论】:

  • 从语义上讲,你只能有一个唯一的 id。我想你想把它改成一个类。
  • id 是一样的,因为我只是想展示不同的情况,它们并不打算同时出现在同一个文档上。
  • 当我不需要href 时,我根本不想使用它..
  • 要求“语义正确”的方式是基于意见的,此外,这不是一个明确定义的问题。 “语义上”的意思是“与意义相关”,但这是什么“意义”呢?
  • 当然是 HTML 文档的语义标准。

标签: javascript html semantics


【解决方案1】:

所有选项在 HTML5 中都是正确的:http://www.w3.org/TR/html-markup/a.html

如果您想涵盖问题的不同角度,请查看一些无障碍(残障人士)指南:

http://www.w3.org/TR/WCAG20-TECHS/SCR35.html

【讨论】:

  • 好的,所以基本上,如果我将使用无法导航的锚点,我将使用'#',但该文档还建议使用通过倡导的方法调用 (onclick) ,我认为这是非常不鼓励使用的。
【解决方案2】:

从语义上讲,可以简单地定义一个完全没有属性的&lt;a&gt;&lt;/a&gt;
引用HTML 4.01 spec

作者还可以创建一个不指定锚点的A 元素,即 未指定 hrefnameid

【讨论】:

    【解决方案3】:

    在 HTML 4.01 中,标签可以是超链接或锚点。在 HTML5,标签总是一个超链接,但如果它没有href 属性,它只是一个超链接的占位符。

    HTML5 有一些新属性,而一些 HTML 4.01 属性没有 支持时间更长。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多