空的href有效吗?

时间:2011-04-12 15:44:18

标签: html href

我们的某个Web开发人员使用以下html作为占位符来设置下拉列表的样式。

<a href="" class="arrow"></a>

这被认为是锚标签有效吗?

由于没有href值,它在我们的某些链接检查器报告中显示为已损坏。

10 个答案:

答案 0 :(得分:172)

这是有效的。

但是,标准做法是使用href="#"或有时使用href="javascript:;"

答案 1 :(得分:109)

正如其他人所说,这是有效的。

但每种方法都有一些缺点:

href="#"为浏览器历史记录添加了一个额外的条目(例如,在回扣时会很烦人。)

href=""重新加载页面

href="javascript:;"似乎没有任何问题(除了看起来凌乱无意义) - 任何人都知道吗?

答案 2 :(得分:55)

虽然不包含href可能是完全有效的HTML,尤其是onclick处理程序,但有一些事情需要考虑:如果没有设置tabindex值,它将不能用于键盘。此外,使用Internet Explorer的屏幕阅读器软件无法访问,因为IE将通过可访问性界面报告任何没有href属性的锚元素不可聚焦,无论是否已设置tabindex。

因此,以下内容可能完全有效:

<a class="arrow">Link content</a>

明确添加空效果href属性

要好得多
<a href="javascript:void(0);" class="arrow">Link content</a>

要获得所有用户的完全支持,如果您使用带有CSS的类来渲染图像,您还应该包含一些文本内容,例如title属性,以提供正在进行的文本描述。

<a href="javascript:void(0);" class="arrow" title="Go to linked content">Link content</a>

答案 3 :(得分:36)

虽然这个问题已经得到解答( tl; dr:是的,空的href值有效),但现有的答案都没有引用相关的规范。

空字符串不能是URI。但是,href属性不仅将URI作为值,还使用URI引用。空字符串可以是URI引用。

HTML 4.01

HTML 4.01 uses RFC 2396 ,在4.2. Same-document References部分(大胆强调我的)中说明:

  

不包含URI的URI引用是对当前文档的引用。换句话说,文档中的空URI引用被解释为对该文档的开头的引用,而仅包含片段标识符的引用是对该文档的已识别片段的引用。 / p>

RFC 2396已被 RFC 3986 (目前为IETF’s URI standard)废弃,essentially says the same

HTML5

HTML5 usesvalid URL potentially surrounded by spacesvalid URL W3C的网址规范,已停止使用。应该使用 WHATWG的URL标准(参见最后一节)。

HTML 5.1

HTML 5.1 usesvalid URL potentially surrounded by spacesvalid URL WHATWG的网址标准<​​/ strong>(请参阅下一节)。

WHATWG HTML

WHATWG的HTML usesvalid URL potentially surrounded by spaces)来自 WHATWG的网址标准<​​/ strong>的valid URL string的定义,其中它表示它可以是relative-URL-with-fragment string ,必须至少是relative-URL string,可以是path-relative-scheme-less-URL stringpath-relative-URL string不是以:后面的方案字符串开头,而是{{3}}定义说(大胆强调我的):

  

路径相对URL字符串必须或更多URL路径段字符串,由U + 002F(/)彼此分隔,而不是以U + 002F开头(/ )。

答案 4 :(得分:26)

当前HTML5 draft还允许完全省略href属性。

  

如果a元素没有href属性,那么该元素表示一个占位符,用于放置链接的位置(如果它是相关的)。

回答你的问题:是的,它是有效的。

答案 5 :(得分:16)

确实,你可以把它留空(W3验证器不会抱怨)。

将这个想法更进一步:省略=“”。这样做的好处是链接不会被视为当前页面的锚点。

<a href>sth</a>

答案 6 :(得分:9)

虽然W3的验证工具可能不会抱怨空href属性,但the current HTML5 Working Draft指定:

  

hrefa元素上的area属性必须包含可能由空格包围的有效网址

有效网址是符合URL Standard的网址。现在URL标准有点令人困惑,但是没有任何地方说明URL可以是空字符串。

...这意味着空字符串是有效的URL。

然而,HTML5工作草案继续说明:

  

注意:不需要hrefa元素的area属性;当这些元素没有href属性时,它们不会创建超链接。

这意味着我们可以简单地省略href属性:

<a class="arrow"></a>

答案 7 :(得分:8)

提醒:

根据我的经验,省略href属性会导致可访问性问题,因为键盘导航会忽略它,并且永远不会像href存在时那样给予焦点。手动将元素包含在tabindex中是一种解决方法。

答案 8 :(得分:3)

它有效但是 像UpTheCreek说的那样 “每种方法都有一些缺点”

如果你通过标签调用ajax 像这样离开href =“”将保持页面重新加载 并且永远不会调用ajax代码...

刚才这个想法会很好分享

答案 9 :(得分:2)

尝试改为<a href="#" class="arrow">。 (注意尖锐的#字符)。