我们的一位Web开发人员使用以下html作为占位符来设置下拉列表的样式.
<a href="" class="arrow"></a>
Run Code Online (Sandbox Code Playgroud)
这被认为是锚标签有效吗?
由于没有href值,它在我们的一些链接检查器报告中显示为已损坏.
SLa*_*aks 176
这是有效的.
但是,标准做法是使用href="#"或有时使用href="javascript:;".
UpT*_*eek 110
正如其他人所说,它是有效的.
但每种方法都有一些缺点:
href="#" 在浏览器历史记录中添加了一个额外的条目(例如,在回扣时会很烦人).
href="" 重新加载页面
href="javascript:;" 似乎没有任何问题(除了看起来凌乱和毫无意义) - 任何人都知道吗?
Nic*_*ick 56
虽然可能完全有效的HTML不包含href,特别是onclick处理程序,但有一些事情需要考虑:如果没有设置tabindex值,它将不能用于键盘.此外,使用Internet Explorer的屏幕阅读器软件无法访问,因为IE将通过可访问性界面报告任何没有href属性的锚元素不可聚焦,无论是否已设置tabindex.
因此,以下内容可能完全有效:
<a class="arrow">Link content</a>
Run Code Online (Sandbox Code Playgroud)
显式添加null-effect href属性要好得多
<a href="javascript:void(0);" class="arrow">Link content</a>
Run Code Online (Sandbox Code Playgroud)
为了获得所有用户的完全支持,如果您使用带有CSS的类来渲染图像,您还应该包含一些文本内容,例如title属性,以提供正在进行的文本描述.
<a href="javascript:void(0);" class="arrow" title="Go to linked content">Link content</a>
Run Code Online (Sandbox Code Playgroud)
uno*_*nor 46
虽然这个问题已经得到解答(tl; dr:是的,空href值有效),但现有的答案都没有引用相关的规范.
空字符串不能是URI.但是,该href属性不仅将URI作为值,还将URI引用.空字符串可以是URI引用.
HTML 4.01 使用 RFC 2396,它在4.2节中说明.同文档参考文献(大胆强调我的):
不包含URI的URI引用是对当前文档的引用.换句话说,文档中的空URI引用被解释为对该文档的开头的引用,并且仅包含片段标识符的引用是对该文档的所标识的片段的引用.
RFC 2396已被RFC 3986(目前是IETF的URI标准)废弃,基本上也是如此.
HTML5 使用(可能包含空格的有效URL → 有效URL)W3C的URL规范已停止使用.应该使用WHATWG的URL标准(参见最后一节).
HTML 5.1 使用(有效的URL可能由空格包围 → 有效的URL)WHATWG的URL标准(参见下一节).
WHATWG的HTML 使用(可能由空格包围的有效URL)来自WHATWG的URL标准的有效URL字符串的定义,其中它表示它可以是相对URL的片段字符串,其必须至少是相对URL字符串,它可以是一个路径相对方案的URL字符串,它是一个路径相对URL字符串,不是以后跟的方案字符串开头的:,它的定义是(粗体强调我的):
路径相对URL字符串必须是零个或多个URL路径段字符串,通过U + 002F(/)彼此分隔,而不是以U + 002F(/)开头.
anr*_*ots 16
实际上,你可以把它留空(W3验证器不会抱怨).
将这个想法更进一步:省略="".这样做的好处是链接不被视为当前页面的锚点.
<a href>sth</a>
Run Code Online (Sandbox Code Playgroud)
虽然W3的验证器可能不会抱怨空href属性,但当前的HTML5工作草案规定:
在
href对属性a和area元素的值必须是一个有效的URL用空格潜在的包围.
一个有效的URL是与相符的网址URL标准.现在URL标准有点令人困惑,但是没有任何地方说明URL可以是空字符串.
...这意味着空字符串不是有效的URL.
然而,HTML5工作草案继续指出:
注:在
href对属性a和area不需要的元素 ; 当这些元素没有href属性时,它们不会创建超链接.
这意味着我们可以简单地省略该href属性:
<a class="arrow"></a>
Run Code Online (Sandbox Code Playgroud)
提醒一句:
根据我的经验,省略该href属性会导致可访问性问题,因为键盘导航将忽略它,并且永远不会像href存在时那样给予焦点.手动将您的元素包含在tabindex中是一种解决方法.
| 归档时间: |
|
| 查看次数: |
137905 次 |
| 最近记录: |