4

我读过href="#"href="javascript:void(0)"比较,我也想知道比较

href="javascript:;" or href="javascript:void(0)",

ps:我一直用href="javascript:;"href="javascript:void(0)",没发现什么麻烦。

4

4 回答 4

3

javascript:任何一种形式在超链接中使用都是不好的。你的 JavaScript 设计应该不显眼。

如果要将事件侦听器附加到锚点,则应使用#锚点甚至实际 URL,例如:

<a href="/delete/post/123">delete</a>
...
<script>
jQuery(function($) {
     $('a').on('click', function(event) {
         event.preventDefault();
         // do ajax stuff
     });
});
</script>

这样,旧浏览器(或禁用 JavaScript 的浏览器)将按照常规链接删除项目,而启用 JavaScript 的浏览器将通过 AJAX 执行此操作,因此页面不必刷新。

如果您的链接真的什么都不做,那么您根本不应该使用锚点;<span>只需为此目的设置 a 样式。

于 2013-09-16T01:51:09.090 回答
0

链接的通常行为javascript:是将文档正文替换为表达式计算结果的任何内容,除非它计算结果为undefined. 您的两个版本之间没有区别,它们都对链接undefined中的哪个版本javascript:无效。

但是,这不是制作无操作链接的首选方式。您不必要地强制浏览器解析和评估 JavaScript。如果您想创建一个什么都不做的链接,您应该将其设置href"#", 并将函数绑定到链接的click事件。您的事件处理程序将被传递一个事件对象;如果您想评估某些代码然后阻止链接被跟踪(附加#到当前 URL),那么您可以使用event.preventDefault(),event.stopPropagation()或简单地false从您的事件处理程序中返回。

最好的选择是在href属性中保留一些有意义的值,这样如果绕过 JavaScript(IE,用户在新窗口中打开链接),仍然有一些理智的后备。然后,您应该在现有的纯 HTML 功能之上添加额外的“丰富”操作。

于 2013-09-16T01:49:12.757 回答
0

您放入的href内容并不真正相关。您应该首先通过false从单击处理程序返回来阻止链接被跟踪。

例子:

<a href="fallback.html" onclick="doSomething();return false;">

在其中,href您可以为禁用 Javascript 的用户放置一个后备解决方案的链接,或者一个页面通知他们需要 Javascript 才能使用该页面的功能。

于 2013-09-16T01:49:53.513 回答
0

javascript:void(0) - 比 javascript:some_code_to_execute 更容易理解。当然,在你的情况下 javascript:; 不难阅读,不会假设代码被破坏。

有几个原因,为什么用 javascript: 处理 lcick 不好。我知道这不是实际问题,但它是相关的:

  1. 这种方法已经过时了,因为浏览器供应商仍然支持它,所以它不在 wc3 标准中。
  2. Link href="javascript" 不适用于没有 javascript 的用户。最好使用 href="/somePage.com?id=123" onclick="makeActionFor(777); return false">
  3. 标记和代码之间没有分离。在这种情况下,将 onclick 放在 prev 示例中也是附加点击处理程序的不好方法。
于 2013-09-16T01:54:45.463 回答