2025-01-24 07:00:03

空href是否有效?

我们的一个web开发人员使用下面的html作为样式化下拉列表的占位符。

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

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

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


当前回答

实际上,您可以让它为空(W3验证器不会抱怨)。

更进一步:去掉=""。这样做的好处是,链接不会被视为当前页面的锚。

<a href>sth</a>

其他回答

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

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

Href ="#"在浏览器历史记录中添加了一个额外的条目(这在后退按钮时很烦人)。

Href =""重新加载页面

Href ="javascript:;"似乎没有任何问题(除了看起来乱七八糟和毫无意义)-有人知道吗?

它是有效的。

然而,标准的做法是使用href="#",有时也使用href="javascript:;"。

虽然W3的验证器可能不会抱怨空的href属性,但当前的HTML5工作草案规定:

a和area元素上的href属性必须具有一个有效的URL值,该值可能被空格包围。

一个有效的URL是指符合URL标准的URL。现在URL标准有点让人困惑,但是它没有规定URL可以是空字符串。

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

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

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

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

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

如果你的意图是这些href-less a元素仍然需要键盘交互,你将不得不沿着正常的路径分配一个角色和tabindex与你通常的单击/keydown处理程序:

<a class="arrow" role="button" tab-index="0"></a>

这是有效的 就像upcreek说的那样 每种方法都有一些缺点。

如果你通过标签调用ajax 像这样保留href=""将保持页面重新加载 ajax代码永远不会被调用…

我有个想法,可以分享一下

试着用<a href="#" class="arrow">代替。(注意尖锐的#字符)。