href 表达式 <a href="javascript:;"></a> 有什么作用?

IT技术 javascript
2021-02-02 13:40:55

我不时在网页中看到以下href。但是,我不明白这是要做什么或技术。有人可以详细说明吗?

<a href="javascript:;"></a>
6个回答

一个<a>元素是无效的 HTML,除非它有一个hreforname属性。

如果您希望它正确呈现为链接(即下划线、手形指针等),那么它只有在具有href属性时才会这样做

因此,此类代码有时用作创建链接的一种方式,但不必在href属性中提供实际 URL 开发人员显然不希望链接本身做任何事情,这是他知道的最简单的方法。

他可能在别处有一些 javascript 事件代码,当点击链接时会触发这些代码,这将是他想要实际发生的事情,但他希望它看起来像一个普通的<a>标签链接。

一些开发者href='#'出于同样的目的使用,但这会导致浏览器跳转到页面顶部,这可能不是我们想要的。而且他不能简单地将 href 留空,因为它href=''是一个返回当前页面的链接(即它会导致页面刷新)。

有办法解决这些问题。在 中使用空的 Javascript 代码href就是其中之一,虽然它不是最好的解决方案,但它确实有效。

是的@YoshieMaster 所说的。如果 URL 有一个# 片段,它永远不会发送到 Web 服务器(或因此,发送到防火墙);它仅在浏览器内部使用。在这种情况下,单击带有<a href="#">...标记的链接</a>不会使您的浏览器向任何地方发送任何 HTTP 请求;它会做的就是滚动到页面顶部。
2021-03-25 13:40:55
出于好奇,有没有更好的方法来做到这一点?
2021-03-26 13:40:55
更好的做法是,如果事件函数执行了,return false;否则event.preventDefault()href操作将永远不会被调用,因此您可以在其中放置更合理的内容。
2021-04-05 13:40:55
一个<a>没有hrefname不是无效的;这可以使用验证器轻松检查。
2021-04-13 13:40:55
根据规范,片段(# 部分)甚至不应该被发送到 Web 服务器,因此很可能您的浏览器在那里做错了。
2021-04-13 13:40:55

基本上不是使用链接来移动页面(或锚点),而是使用这种方法启动一个 javascript 函数

<script>
function doSomething() {
  alert("hello")
}
</script>
<a href="javascript:doSomething();">click me</a>

单击该链接将触发警报。

有多种机制可以避免链接到达其目的地。问题中的那个不是很直观。

更简洁的选择是使用文档中的href="#no"where#no是未定义的锚点。

您可以使用更具语义的名称,例如 #disable 或 #action 来提高可读性。

该方法的好处:

  • 避免空 href="#" 的“移至顶部”效果
  • 避免使用javascript

缺点:

  • 您必须确保文档中没有使用锚名称。
  • URL 更改为包含(不存在的)锚作为片段,并创建一个新的浏览器历史记录条目。这意味着单击链接后单击“后退”按钮不会按预期运行。

由于<a>元素不充当链接,因此在这些情况下最好的选择不是使用<a>元素而是使用 a<div>并提供所需的类似链接的样式。

我也喜欢未定义的锚点。但是,另一个缺点是它将锚点添加到您的浏览器历史记录中,因此我选择在 OP 中使用空白的 JS 方法。
2021-04-09 13:40:55
<a href="javascript:alert('Hello');"></a>

只是简写:

<a href="" onclick="alert('Hello'); return false;"></a>
有点,但这不是真正的“喜欢”比较。这就是一些人首先陷入使用它的陷阱的原因。
2021-03-28 13:40:55

参考这个:

<a href="Http://WWW.stackoverflow.com">Link to the website opened in different tab</a>
<a href="#MyDive">Link to the div in the page(look at the chaneged url)</a>
<a href="javascript:;">Nothing happens if there is no javaScript to render</a>