没有href属性的锚标签是否安全?

joh*_*ohn 226 html anchor standards hyperlink

是否可以使用不包含href属性的锚标记,而是使用JavaScript单击事件处理程序?所以我会href完全省略,甚至没有它(href="").

dth*_*her 209

在HTML5中,使用a不带href属性的元素是有效的.它被认为是"占位符超链接".

例:

<a>previous</a>
Run Code Online (Sandbox Code Playgroud)

在w3c锚标记参考页面上查找"占位符超链接":https://www.w3.org/TR/2016/REC-html51-20161101/textlevel-semantics.html#the-a-element.

它也在维基上提到:https: //www.w3.org/wiki/Elements/a

占位符链接适用于您要使用锚元素但不能在任何位置导航的情况.这对于在导航菜单或面包屑路径中标记当前页面非常方便.(旧方法可能是使用span标记或带有名为"active"或"current"的类的锚标记来设置样式,使用JavaScript来取消导航.)

如果您希望在运行时通过JavaScript动态设置链接的目标,则占位符链接也很有用.您只需设置href属性的值,锚标记就变为可点击.

也可以看看:

  • 请注意,如果没有`href`,`cursor:pointer`样式将不会自动添加到元素中. (12认同)
  • "占位符链接"的定义是什么? (3认同)

Gun*_*man 35

没关系,但同时会导致某些浏览器变慢.

http://webdesignfan.com/yslow-tutorial-part-2-of-3-reducing-server-calls/

我的建议是使用<a href="#"> </a>

如果您正在使用JQuery,请记住也使用:

.click(function(event){
    event.preventDefault();
    // Click code here...
});
Run Code Online (Sandbox Code Playgroud)

  • 实际上,根据文章(并且有意义),潜在的性能损失仅适用于空的**src**属性.它没有说明关于空href属性的性能方面的任何信息. (18认同)
  • 性能损失仅适用于实际指定空href属性的情况.问题表明根本没有href属性. (16认同)
  • 我不能使用href ="#",因为我使用的是ajax书签,它涉及更改哈希,我该怎么办? (7认同)
  • 而不是使用javascript:void(0); 在href里面我使用javascript:; 它写得更短. (5认同)

Que*_*tin 25

简答:不.

答案很长:

首先,没有href属性,它将不是链接.如果它不是链接,那么它不会是键盘(或呼吸开关,或其他各种非基于指针的输入设备)可访问(除非您使用的HTML 5功能tabindex不受普遍支持).控件没有键盘访问是非常罕见的.

第二.你应该有一个替代方案,当JavaScript没有运行时(因为它从服务器加载缓慢,互联网连接被丢弃(例如移动火车上的移动信号),JS被关闭等等).

通过不引人注目的JS利用渐进增强.

  • 'a'标签上的Tabindex自HTML4(至少)以来一直有效http://www.w3schools.com/tags/att_global_tabindex.asp (5认同)
  • 这是完全错误的.无论你当时是否引用旧的HTML规范,我都不能说,但根据HTML5规范,拥有一个没有`href`属性的`a`标签确实是完全有效的. (4认同)

Ras*_*ive 20

如果必须使用href来实现向后兼容性,您也可以使用

<a href="javascript:void(0)">link</a>
Run Code Online (Sandbox Code Playgroud)

而不是#,如果你不想使用该属性

  • 我需要一个 &lt;a&gt; 标签,除了函数之外,它的行为就像一个链接。这对我有用。 (3认同)

mon*_*ome 12

没有href属性就可以使用标签.与此处的许多答案相反,实际上有标准原因在没有href时创建锚点.在语义上,"a"表示锚或链接.如果你将它用于那些意义之后的任何东西,那么你没事.

没有href的标签的一个标准用途是创建命名链接.这允许您使用名称= blah的锚点,稍后您可以使用href =#blah创建锚点以链接到当前页面的命名部分.但是,这已被弃用,因为您也可以以相同的方式使用ID.例如,您可以使用带有id = header的标头标记,稍后您可以使用指向href = #head的锚点.

但是,我的观点是不建议使用name属性.只提供一个不需要href的用例,并因此推断出为什么不需要它.

  • 我认为问题是试图询问以及其他答案正在解决的问题是,是否可以省略`<a>`元素*的`href`属性,它被用作交互元素*(即链接) .正如你所提到的,没有`href`属性,它很简单......不是一个链接,只是一个锚,这完全是另一回事. (2认同)
  • 是的,但是 - 只是强调一下 - &lt;a&gt; 标签在这些用例中仍然有效。 (2认同)

小智 8

<a>没有href 的辅助功能角度来看,所有链接都应该是可制表的,因此如果您没有href,请添加tabindex ='0".

  • 或者,如果要执行页内操作而不是重定向,请使用按钮。 (4认同)

Jon*_*Jon 7

<a>使用多级菜单时,没有"href" 的标签可以很方便,您需要扩展下一级别,但不希望该菜单标签成为活动链接.我从来没有遇到任何问题.

  • 您是否尝试过使用键盘访问该菜单? (2认同)