空链接锚

时间:2009-07-27 19:50:00

标签: javascript html anchor

我有一个锚点,它不会去任何地方,但有一个onclick(例如<a onclick="..."></a>)。我的问题与href属性有关。我应该为这个价值做些什么?

如果我只是省略href,那么锚点没有相应的装饰 - 鼠标指针图标在鼠标放在它上面时不会改变。

如果我使用href="#",则单击链接时窗口会滚动到页面顶部。

如果我使用href="javascript:..."并将onclick的值继续javascript:,则会保留页面,地址栏会在点击链接时包含Javascript。

当我提到浏览器行为时,我指的是Chrome,我正在测试它。

当锚点不是实际链接但只存在href执行行为时,我应该为onclick放置什么?

6 个答案:

答案 0 :(得分:12)

理想情况您可以选择禁用Javascript的人:

<a href="degrade_option.html" onclick="return fancy_option();">do the option!</a>

如果你不是那种东西,虽然你真的应该这样,最常见的方法是使用英镑然后取消事件以防止发生默认操作,如下所示:

<a href="#" onclick="return do_something();">do something</a>

但是你必须确保do_something返回false。 (或者你可以在点击处理程序的末尾添加return false;,但这会更快地变得难看)

虽然,老实说,你真的不应该开始使用内联Javascript属性。他们是不好的做法,维持的噩梦,还有更好的选择。

编辑:在回复您的评论时,替代方案为unobtrusive javascript

  

“Unobtrusive JavaScript”是JavaScript编程语言中的一种新兴技术,如万维网上所使用的那样。虽然该术语没有正式定义,但其基本原则通常被理解为包括:

     
      
  • 从网页的结构/内容和呈现中分离功能(“行为层”)
  •   
  • 避免传统JavaScript编程问题的最佳实践(例如浏览器不一致和缺乏可伸缩性)
  •   
  • 支持可能不支持高级JavaScript功能的用户代理的渐进增强
  •   

阅读页面了解一些例子。

答案 1 :(得分:11)

在你的onclick处理程序中,将其添加到结尾:

return false;

这将取消默认处理(即链接后),你可以在href中放入任何你想要的东西(#就像任何东西一样好。)

答案 2 :(得分:4)

<a href="javascript:void(0);" onclick="...">txt</a>

答案 3 :(得分:1)

如果没有使用,我更喜欢丢弃href(根据W3C规范不需要)。要获得预期的鼠标光标,请使用CSS!

<style type="text/css">
a { cursor: pointer; }
</style>
<a onclick="go();">link</a>

答案 4 :(得分:0)

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

简短,描述性,不像#跳。

答案 5 :(得分:0)

有两种方法可以执行此操作,如果链接的ID标记为link,则可以在HTML中使用href="#",然后在JavaScript中使用:

$('#link').click(function(evt) {
 // code goes here
 evt.preventDefault();
});

这可以防止浏览器的正常行为。或

$('#link').click(function(evt) {
 // code goes here
 return false;
});