【问题标题】:What is the right href value for a JavaScript anchor tag?JavaScript 锚标记的正确 href 值是多少?
【发布时间】:2012-03-07 22:24:51
【问题描述】:

我通常必须将 JavaScript 函数绑定到锚点单击事件。这很容易使用 jquery 或 onclick 内联属性。

但是,我的问题是我不知道保持href 为空的最佳方法是什么

例如:

  1. <a href="javascript:void(0)"> - 只是空的代码似乎有点太多了
  2. <a href=#> - 如果我不想移动到另一个页面,我必须返回 JavaScript 调用中的 false
  3. <a href> - 这个选项打破了 光标和悬停样式,浏览器不会将其呈现为链接
  4. <a> - 同上

空锚的最佳href 值是多少?我不想在没有 JavaScript 的情况下保留功能

【问题讨论】:

标签: javascript html anchor href


【解决方案1】:

正确的是使用一个空的a元素href属性并在Javascript中绑定点击事件。

对于不显眼的设计,您应该有一个带有正确链接的href 属性(这样没有 Javascript 的人仍然可以使用该站点)并在 Javascript 中删除该属性,绑定点击事件。

如果您只是将a 元素用作绑定点击事件的目标,请考虑改用divspan

【讨论】:

  • 也就是说,如果单击进行导航(例如 ajax)。并非总是如此。
  • 使用button 可能更合适,具体取决于功能。
  • 这确实是 dabatable,因为按钮通常依赖于浏览器和操作系统,并且很难设置样式。
  • @Rok:它们很容易设置样式,就像任何其他元素一样。示例:jsfiddle.net/9j5yb/1
  • 当然,我知道。但是只需几行代码就可以删除所有依赖于操作系统的代码。归根结底——区别只是语义上的——对于 SEO。
【解决方案2】:

我个人坚信使用 JavaScript 来扩展功能,而不是替换。话虽如此,我让锚点指向我实际上只是用 javascript 执行的操作的“安全”后备。简单地说:

<a href="/users/create" class="user-create"></a>

然后,如果 javascript 能够成功加载并绑定到元素,则补充(并返回 false),否则如果用户没有 javascript(通过插件阻止或没有阻止),仍然为用户提供完成任务的能力已加载)。

【讨论】:

  • 也就是说,如果单击进行导航(例如 ajax)。并非总是如此。
  • @RokKralj:除了 UI 转换,我不同意。您可以执行的任何其他单击都完全可以在页面转换中执行(不是那么漂亮,当然,但可能)。 -- 跟进:想想你可以在 SO 上执行的每一个操作:评论、投票、标记等。所有这些都可以通过跟进另一个页面来完成。它会很丑陋(按照今天的标准)但可行(他们在 90 年代是如何做到的?)例外是“添加评论”等显示/隐藏内容,但如果没有 javascript,您只需保持它在任何时候。
【解决方案3】:

不要使用 A 元素。您也可以使 DIV 可点击或任何其他元素。

或者你也可以简单地将 href 属性去掉,就像这样。

<a onclick="myFunction();">dasd</a>

如果你还想让它看起来像一个链接,把它放在 CSS 中:

a {
  text-decoration: underline;
  color: blue;    
}​

【讨论】:

  • 如果省略href,则不会呈现为链接。
  • 你这是什么意思,这不是真的。该元素仍然遵守所有 CSS 规则。
  • 这只是浏览器预定义的渲染,如果您关心设计,则不应使用它。始终为您的链接设置样式链接。看到这个:jsfiddle.net/b59Pa
  • 那个小提琴是怎么回事?这和我展示的一样。无论如何,在这种情况下,它不会用作锚点或链接,而是使用button 会更合适。当然,您可以使用 CSS 以任何方式设置任何元素的样式,但您最初的答案建议您可以省略 href,这是不正确的。
  • jsfiddle.net/b59Pa/3 不是。 Asker 说:“但是,我的问题是我从来不知道什么是保持 href 为空的最佳方法。”
【解决方案4】:

我觉得

<a href="javascript:;"></a>

<a href="javascript:void;"></a>

是指示空锚的最佳方式。

<a href="#someId"></a>

会将页面移动到具有 id="someId" 的 dom 元素

【讨论】:

    【解决方案5】:

    这一切都取决于。如果您单击锚点以打开页面上的面板,那么我很乐意使用选项 2,但前提是我使用 javascript 插入该锚点。

    这意味着在禁用 javascript 的情况下,锚点不会显示并且面板应该可见。

    如果链接到达某个地方,那么您需要像 brad christy 和 odid 所说的实际链接地址。

    【讨论】:

      【解决方案6】:

      &lt;a href=#&gt;ABC&lt;/a&gt;

      =>点击上面的链接会在地址栏中设置url,使文档闪烁或重置滚动位置

      为了避免上述问题, &lt;a href=# onclick="return false" &gt;abc&lt;/a&gt; 可以像往常一样使用 jQuery 和绑定事件处理程序 或者您可以在 onclick 上执行任何返回 false 值的函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-29
        • 2011-04-08
        • 2015-09-23
        • 2020-10-13
        • 2011-04-19
        • 2012-06-08
        • 1970-01-01
        • 2023-03-31
        相关资源
        最近更新 更多