代码之家  ›  专栏  ›  技术社区  ›  Mic

href=“javascript:”与href=“j脚本:void(0)”

  •  59
  • Mic  · 技术社区  · 15 年前

    我们的web应用完全在浏览器上呈现。
    服务器只通过JSON消息与浏览器通信。

    <a> 标签没有真正的 href 指向其他页面。

    在我寻求去除不必要的东西的过程中,我想知道我是否能去除无数的不必要的东西 void(0) 我们的代码中有,因为它们看起来毫无用处:

    <a onclick="fn()">Does not appear as a link, because there's no href</a>
    <a href="javascript:void(0)" onclick="fn()">fn is called</a>
    <a href="javascript:" onclick="fn()">fn is called too!</a>
    

    有没有人知道 href="javascript:" 会引起问题吗?
    即使在IE7上也能用。。。

    8 回复  |  直到 10 年前
        1
  •  48
  •   Roko C. Buljan    10 年前

    它不会引起问题,但它是一个技巧,做同样的事情 PreventDefault

    <a href="#" onclick="fn()">click here</a>
    

    您将跳转到顶部,URL将具有锚定 # return false; 或使用 javascript:void(0);

    <a onclick="fn()">Does not appear as a link, because there's no href</a>
    

    就这么做吧 a {text-decoration:underline;} 你会有“链接a-like”

    <a href="javascript:void(0)" onclick="fn()">fn is called</a>
    <a href="javascript:" onclick="fn()">fn is called too!</a>
    

    没关系,但是在你的房间里 function 最后,只是 为了防止默认行为,您不需要再做任何事情。

        2
  •  24
  •   Andy E    13 年前

    使用时 javascript: 在导航中,已执行脚本的返回值(如果有)将成为浏览器中显示的新文档的内容。这个 void JavaScript中的运算符导致后面表达式的返回值返回 未定义 ,以防止发生此操作。您可以自己尝试,将以下内容复制到地址栏中,然后按return键:

    javascript:"hello"
    

    结果是一个只有“hello”这个词的新页面。现在将其更改为:

    javascript:void "hello"
    

    当你写作的时候 未定义 ,所以浏览器什么也不做。这使得以下内容或多或少相当:

    javascript:undefined;
    javascript:void 0;
    javascript:
    

    除了 未定义 void 0 通常是毫无意义的,基本上是从 void functionThatReturnsSomething()

    正如其他人所提到的,最好还是继续使用 return false; javascript代码:

        3
  •  12
  •   brookslee    13 年前

    使用'j'脚本:无效0会给IE带来麻烦

    当你点击链接时,它会触发 卸载前 窗口事件!

    <!doctype html>
    <html>
    <head>
    </head>
    <body>
    <a href="javascript:void(0);" >Click me!</a>
    <script>
    window.onbeforeunload = function() {
        alert( 'oops!' );
    };
    </script>
    </body>
    </html>
    
        4
  •  8
  •   Tanguy    11 年前

    如果使用jQuery事件设置onclick,则此方法在所有浏览器中似乎都可以:

    <a href="javascript:;">Click me!</a>
    

        5
  •  3
  •   Moin Zaman    15 年前

    你可以把它们都做出来 #

    然后您需要添加 return false; 到任何函数的末尾,调用onclick的锚不让页面跳转到顶部。

        6
  •  1
  •   RiccardoC    10 年前

    我通常不使用任何href和改变与css方面,使他们似乎链接。因此,除了应用程序的事件处理程序之外,您根本不必担心链接效果

    a {
      text-recoration: underline;
      cursor: pointer;
    }
    
        7
  •  1
  •   Kishore    7 年前

    j脚本:void(0);-->它执行void函数并返回undefined。这可能与IE有关。 javascript:;-->这不起任何作用。创建死链接最安全。 “#”->这意味着指向同一个DOM,它将在单击时重新加载页面。

        8
  •  0
  •   Peter Bridger    15 年前

    a href 链接?

    使用 span 标签 :hover