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

Joh*_*ore 208 javascript

我已经看到网页中不时使用以下href.但是,我不明白这是尝试做什么或技术.有人可以详细说明吗?

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

Spu*_*ley 225

一个<a>元件是无效的HTML,除非它有任一种hrefname属性.

如果你想让它正确地呈现为链接(即带下划线,手形指针等),那么只有它具有href属性才会这样做.

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

他可能在其他地方有一些javascript事件代码,在点击链接时触发,这将是他想要实际发生的事情,但他希望它看起来像普通的<a>标记链接.

一些开发人员使用href='#'相同的目的,但这会导致浏览器跳转到页面顶部,这可能不是想要的.并且他不能简单地将href留空,因​​为href=''它是返回当前页面的链接(即它导致页面刷新).

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

  • 更好的做法是,如果事件函数执行`return false;`或`event.preventDefault()`那么`href`动作将永远不会被调用,所以你可以在那里放一些更合理的东西. (26认同)
  • 出于好奇,有没有更好的方法来做到这一点? (14认同)
  • 没有`href`或`name`的`<a>`无效; 这可以使用验证器轻松检查. (5认同)
  • 片段(#部分)根本不应该根据规范发送到Web服务器,因此您的浏览器很可能在那里做错了. (2认同)
  • 是的@YoshieMaster说的是什么.如果URL有一个`#`*片段*,它永远不会发送到Web服务器(或者因此发送到防火墙); 它仅在浏览器内部使用.在这种情况下,单击标有"<a href="#">`...`</a>"的链接不会导致浏览器在任何地方发送任何HTTP请求; 它只会滚动到页面顶部. (2认同)

Eon*_*dan 34

基本上不使用链接来移动页面(或锚点),使用此方法启动javascript函数

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

单击该链接将触发警报.


Pau*_*ner 28

有几种机制可以避免链接到达目的地.问题中的那个不太直观.

的清洁器的选择是使用href="#no"其中#no是在文档中的非限定的锚.

您可以使用更多语义名称(如#disable或#action)来提高可读性.

方法的好处:

  • 避免空href ="#"的"移动到顶部"效果
  • 避免使用javascript

缺点:

  • 您必须确保文档中未使用锚名称.

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

  • 我也喜欢非定义的锚.但是,另一个缺点是它将锚点添加到浏览器历史记录中,因此我选择在OP中使用空白JS方法. (12认同)

bjo*_*rnd 9

<a href="javascript:alert('Hello');"></a>
Run Code Online (Sandbox Code Playgroud)

只是简写:

<a href="" onclick="alert('Hello'); return false;"></a>
Run Code Online (Sandbox Code Playgroud)

  • 有点但不是真正的"喜欢喜欢"比较.这是一些人首先陷入使用它的陷阱的原因. (3认同)

Ami*_*ati 9

它用于在内部编写 js 代码,href而不是像事件侦听器那样onclick避免#链接,href以使a标签对 HTML 有效。

有趣的事实

我研究了如何javascript:href属性内部使用,得到了可以在其中写多行的结果!

<a href="
     javascript:
        a = 4;
        console.log(a++); 
        a += 2; 
        console.log(a++); 
        if(a < 6){ 
            console.log('a is lower than 6');
        } 
        else 
            console.log('a is greater than 6');
        function log(s){
            console.log(s);
        }
        log('function implementation working too');

">Click here</a>
Run Code Online (Sandbox Code Playgroud)
  • 在 chrome 版本 68.0.3440.106(官方版本)(64 位)中测试

  • 在 Firefox Quantum 61.0.1(64 位)中测试

  • 这很有趣——尽管绝对可怕。你的回答终于解释了这实际上意味着什么:) (2认同)

小智 8

参考:

<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>
Run Code Online (Sandbox Code Playgroud)


Daa*_*mer 7

这是一种使链接在单击时完全没有任何作用的方式(除非Javascript事件绑定到它).

这是一种运行Javascript而不是关注链接的方法:

<a href="Javascript: doStuff();">link</a>
Run Code Online (Sandbox Code Playgroud)

当实际上没有javascript运行时(就像你的例子)它什么都不做.


Gow*_*wri 6

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

javascript: 告诉浏览器要编写 javascript 代码