【问题标题】:javascript:void(0) or onclick="return false" for <a> - which is better?<a> 的 javascript:void(0) 或 onclick="return false" - 哪个更好?
【发布时间】:2011-03-28 19:15:33
【问题描述】:

有一个基于 javascript 的界面 - 所以我不需要支持没有 javascript 的工作。

我有一个

<a>Something</a>

带有 JS 代码的元素,它在点击事件上绑定 - 所以,我不希望在用户点击后重新加载页面。

哪种方式更好?

1. <a href="javascript:void(0)">Something</a>
2. <a href="#" onclick="return false;">Something</a>

每种方法的优缺点是什么?

【问题讨论】:

标签: javascript


【解决方案1】:

两者都是糟糕的选择。演示不应与内容混合。这意味着没有 javascript: URI,当然也没有 onclick 属性。

方法:

某事

    函数 myFunction(...) { ... }
    document.getElementById('myLink').addEventListener('click', myFunction, false);

【讨论】:

  • 一般来说是第二种方式——事件监听。为了简单起见,我写了 onclick="..." 。我使用 JQuery - 所以 $("#elementId").bind("click", function(){return false;});谢谢。
  • 你说得对,两者都是糟糕的选择,但更糟糕的是:它在 IE 中不起作用。从关注点分离的角度来看,在 &lt;a&gt; 之后立即添加 &lt;script&gt; 元素实际上如何改善事情?
  • 叹息。我不会再深入探讨 IE 不好所以我不会再去支持它的问题了。我将限制自己指出使用哪个浏览器是用户的选择,而不是您的,而且大多数用户既不知道也不关心他们使用哪种浏览器。有些根本无法切换。这种情况甚至没有争议:addEventListener 甚至在当前版本的 IE (8) 中都不起作用,这意味着您的代码在 50% 的浏览器中不起作用。您真的要排除 50% 的人使用您的网站吗?
  • 好的,这是你的选择。但是,可以公平地假设提出原始问题的人会关注 IE。
  • 另一个缺点:这将导致链接的样式不像其他链接,例如默认情况下不会加下划线,因为缺少href 属性。
【解决方案2】:

两者都没有。如果您的链接无处可去,请不要使用&lt;a&gt; 元素。使用 &lt;span&gt; 或其他适当的名称,并添加 CSS 以根据需要设置样式。

【讨论】:

  • 实际上,&lt;a&gt; 元素更好,因为它在语义上更正确。除非一切都是可点击的,比如一个成熟的网络应用程序,&lt;a&gt; 元素比&lt;span&gt; 更有可能被认为是可点击的。
  • 为什么不作为链接或锚点在语义上更正确?
  • 因为&lt;span&gt; 在语义上不是任何东西。当您单击&lt;a&gt; 时,它会更近一些,即使它不是一个链接。然而,就像我之前所说的,如果我正在编写一个成熟的独立 web 应用程序,那么这些语义差异可能就不那么重要了,我只会坚持其中一个;可能是&lt;span&gt;
  • 是的,我知道&lt;span&gt; 没有传达任何语义含义。但是,由于问题是询问带有onclick="return false;"&lt;a&gt; 元素,我认为OP 希望该链接完全不做任何事情,使其作为链接完全没有意义。重新阅读问题,我想我误解了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 2014-06-30
  • 2012-06-09
  • 2012-01-03
相关资源
最近更新 更多