链接中是否需要使用href属性?

9
我问这个问题是因为我有一些通过ajax拉出内容的链接,它们像按钮一样操作,所以它们不需要任何href属性。(我从SEO的角度来问这个问题)
8个回答

27

我假设你所说的“链接”是指a元素。如果是这样,那么:

不是。至少在HTML5草案规范中没有:

如果a元素没有href属性,则该元素表示一个占位符,用于放置链接(如果有必要)。

来自HTML 4.01规范

  

作者还可以创建一个A元素,不指定锚点,即不指定href、name或id。这些属性的值可以通过脚本在以后设置。


1
这与楼主的情况不符。楼主不想要一个占位符链接,她想要一个按钮。(哦,而且在早期的HTML版本中也不需要a@href。) - Mathias Bynens
1
没错。然而,对于问题“链接是否需要href属性”的答案是“不需要”。关于如何使用这样的链接的语义问题是完全不同的问题。原帖的代码在没有href属性的情况下可以通过验证测试。 - James Allardice
1
不,严格来说,如果它不包含href属性,那么它甚至都不是一个链接。 - Mathias Bynens
2
好的,这又是真的。请看我回答顶部的假设。 - James Allardice

7

链接必须有 href 属性吗?

是的。没有 href 属性的锚点不是链接。

我问这个问题是因为我有一些像按钮一样通过 ajax 拉出内容的链接。

如果您要这样做,请正确执行。使用 非侵入式 JavaScript pushState

只有在使用指针设备并启用 JS 时才起作用的“链接”不是好的链接。

我从 SEO 的角度来提出这个问题。

搜索引擎不会执行您的 JavaScript,因此(取决于 JS 的)伪链接只是它们所关心的虚无之物。


4
哎呀 - 有点严厉,似乎太过于绝对化了。 - Derek Morrison

6

如果您有类似按钮的链接,您应该使用<button>元素。


2

不,它并不是。但是如果href未设置,链接可能呈现出不同的外观(下划线和颜色)。


2

我不确定,但是一段时间以前,我遇到了一个关于没有 href 的 "a" 标签的问题...点击就无法工作。但也许那只是一个旧浏览器的问题。


2

根据规格说明,如果您省略 href 属性,浏览器会实施不同的默认样式(例如不将光标更改为指针)。添加虚拟 href 的最常见方法有:

href="#" // But the event handler function must return false in order to avoid the default behaviour of jumping to the top of the page

href="javascript:void()" // has the advantage of having no annoying default behaviour

常见但糟糕。不要因为有一百万只苍蝇而在粪便中玩耍。 - Quentin

1

它们并非绝对必需,但您应该将 href="#/" 作为 href 放置,以使其在语义上正确。如果没有 href="" 属性,则锚点很可能会被解析为页面中的书签,特别是如果指定了 name="" 属性。


1
我建议您使用#/,因为仅使用#会导致浏览器跳转到页面顶部。 - My Head Hurts
感谢 @MyHeadHurts 的推荐。编辑了我的回答。 - Bojangles
我建议您链接到更有用的内容,而不是页面上不存在的部分。 - Quentin

0

虽然不是必需的,但您应该将href添加到锚标记中,因为没有href,它们实际上不是锚标记。

您可以向链接添加“#”,并添加onClick ='return false;'以防止单击事件。如果您正在使用JQuery,则可以在链接的单击处理程序中添加event.preventDefault()

从SEO的角度来看,我建议使用标题作为锚标记(避免使用负文本缩进属性)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接