我们的一个web开发人员使用下面的html作为样式化下拉列表的占位符。
<a href="" class="arrow"></a>
这被认为是锚标签有效吗?
由于没有href值,它在我们的一些链接检查器报告中显示为broken。
我们的一个web开发人员使用下面的html作为样式化下拉列表的占位符。
<a href="" class="arrow"></a>
这被认为是锚标签有效吗?
由于没有href值,它在我们的一些链接检查器报告中显示为broken。
当前回答
提醒一句:
根据我的经验,忽略href属性会导致可访问性问题,因为键盘导航将忽略它,并且永远不会像href存在时那样给予它焦点。手动在tabindex中包含元素是一种解决方法。
其他回答
实际上,您可以让它为空(W3验证器不会抱怨)。
更进一步:去掉=""。这样做的好处是,链接不会被视为当前页面的锚。
<a href>sth</a>
试着用<a href="#" class="arrow">代替。(注意尖锐的#字符)。
虽然不包含href可能是完全有效的HTML,特别是使用onclick处理程序时,但有一些事情需要考虑:如果没有tabindex值设置,它将不能用于键盘聚焦。此外,使用Internet Explorer的屏幕阅读器软件将无法访问它,因为IE将通过可访问性接口报告任何没有href属性的锚元素为不可聚焦的,无论tabindex是否已设置。
因此,虽然以下说法可能完全正确:
<a class="arrow">Link content</a>
显式地添加一个null-effect 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>
这是有效的 就像upcreek说的那样 每种方法都有一些缺点。
如果你通过标签调用ajax 像这样保留href=""将保持页面重新加载 ajax代码永远不会被调用…
我有个想法,可以分享一下
虽然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>