在我工作的项目中,我最近从开发后端(即非Web)服务器转向与Web相关的事物。在HTML代码中,我发现了以下所有内容:
<a href='#'>some link</a>
然后,某些JS附加到click
元素的<a>
事件。
这个唯一的哈希值是否有任何特殊含义?我了解href='#some_id'
如何告诉浏览器滚动到ID = some_id
的元素。但href='#'
不起作用,对吧?
如果只是创建一个可点击的文本,为什么不简单地使用<span>
?
答案 0 :(得分:16)
完全。你在这里看到的是某种糟糕的设计(尽管使用href="#"
)是很常见的。
如果不阻止默认操作,它实际上会跳到页面顶部。
更好的是
<button>
并相应地设置样式(甚至可能只通过JavaScript插入)这还取决于该网站是否可以使用禁用的JavaScript运行。如果是,那么这样的链接(但也是一个按钮)将不起作用。
但无论如何,从语义的角度来看,仅使用链接来获得“可点击”的内容是错误的。
答案 1 :(得分:10)
自己链接到页面顶部的哈希。
这有时用于此目的 - 即“返回顶部”链接,但更典型的是这种链接与Javascript单击结合使用,甚至返回false,从而否定href的操作
在这种情况下,出于以下原因使用它:
<a>
标签可能在语义上是正确的 - 即要点击的项目充当链接;即加载更多内容,或打开弹出窗口等,即使它使用Javascript的功能。
使用<a>
标记也表示该元素的样式与网站上其他<a>
标记的样式相同。这包括:hover
效果样式等。请注意,IE6仅支持:hover
元素上的<a>
,而不支持任何其他内容,这意味着如果该网站设计为在IE6中工作或仍需要支持它,那么你不能用其他标签复制这个功能。这是在过去使用<a>
标记用于此功能的一个非常好的理由,即使它在语义上不合适。这些天来,它不是一个问题。即使在现代浏览器中,如果您希望它们与其他链接看起来相同,那么对这些项目使用<a>
对于减少复制的样式表仍然很有用。链接还有一些其他特殊功能,可能难以与其他元素一起复制,例如在选项卡索引序列中等。
HTML要求<a>
标记具有href
属性,以便将元素呈现为链接,因此哈希将用作此值的最小值。此外,在href
属性中使用哈希表示如果用户关闭Javascript或开发人员忘记return false;
,该链接不会导致任何令人讨厌的意外后果。相比之下,拥有一个空字符串会导致它重新加载页面,如果你刚刚运行一些javascript,这不太可能是你想要的。然而,将链接指向有效的URL也是很常见的,如果Javascript被关闭,它将被运行;这是为您的网站提供后备机制的好方法。但这并不总是合适的,显然不是这里的意图。
鉴于该项目只是在Javascript中触发点击事件,因此没有理由不为此使用任何其他元素。您可以非常轻松地使用<span>
(甚至更好,<button>
),但上述各点应该表明使用<a>
代码没有任何问题。
希望有所帮助。
答案 2 :(得分:2)
这个唯一的哈希值是否有任何特殊含义?
它链接到页面顶部
为什么不简单地使用
<span>
?
<button>
优于跨度。事情built on top of a server side alternative 最好。
答案 3 :(得分:0)
因为您希望浏览器将此链接设置为与所有其他链接相同,并且无需指定(例如,使用class
)“您知道,我希望它看起来像链接,即使它是技术上不是“。这对可维护性来说真的不好。
答案 4 :(得分:0)
由于:
href
开始。 修辞问题:你能否解释为什么你认为span
比a
更适合链接?
附录:类似button
或其他动态元素的内容可能更适合此处,但需要非span
的文字和假装这是一个链接更糟。