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

时间:2011-03-13 20:59:20

标签: html hyperlink standards anchor

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

9 个答案:

答案 0 :(得分:199)

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

示例:

<a>previous</a>

在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属性的值,锚标记就可以点击。

另见:

答案 1 :(得分:34)

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

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

我的建议是使用&lt; a href =“#”&gt;&lt; / a&gt;

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

.click(function(event){
    event.preventDefault();
    // Click code here...
});

答案 2 :(得分:24)

简短回答:不。

答案很长:

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

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

progressive enhancement

使用unobtrusive JS.

答案 3 :(得分:16)

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

<a href="javascript:void(0)">link</a>

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

答案 4 :(得分:12)

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

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

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

答案 5 :(得分:8)

从可访问性角度<a>没有href是不可标记的,所有链接都应该是可以标记的,所以添加一个tabindex =&#39; 0&#34;如果你没有href。

答案 6 :(得分:7)

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

答案 7 :(得分:0)

在某些浏览器中,如果您没有提供href标记,则会遇到问题。我建议你写一下这样的代码:

<a href="#" onclick="yourcode();return false;">Link</a>

你可以用自己的函数或逻辑替换你的code(),但要记得添加return false;最后的陈述。

答案 8 :(得分:-1)

我能够做到这一点:

<a id="dumb-button" href="#" onclick="return false;">Link</a>

它忽略了点击。然后我使用jQuery来捕捉&#34;哑巴按钮&#34;单击并触发我的代码(隐藏一些div /显示div)。