[HTML]href="###"的作用以及如何设置空链接
众所周知,<a>
的href
属性除了能指向一个URL,还能指向锚点。锚点链接就不说了,这里说说它的特殊用法。
在初期开发,尤其是切图的时候,需要给a
一个href
属性,否则a
可能会没有应有的样式,例如没有下划线,看起来就跟普通文本无异。如果仅仅这样写:
<a href>link</a>
又相当于
<a href="当前页面的URL"></a>
点击之后会刷新当前页面。
好多开发者喜欢写上一个#
来表示这是一个空链接:
<a href="#">link</a>
这样倒是没有上面的问题,但又有新问题:页面会跳转到顶部。很多大网站都没有注意到这一点。
其实解决这个问题的方法很简单,只需要在#
后面再添加一个不存在的锚点,点击a
的时候就没有任何反应了:
<a href="#idonotcare">link</a>
简洁点也可以这样写:
<a href="##">link</a>
<a href="#?">link</a>
全凭你的喜欢好了。
不过这样也有点美中不足:点击之后,虽然页面没有反应,但会在浏览器的地址栏出现你设置的锚点。其实这无关紧要。不过如果你非要觉得别扭,那下面的方法可以解决这个小小的不足:
<a href="javascript:void(0)">link</a>
void
总会返回undefined
,你在void
之后写啥都没关系。这样写除了要多输入几个字符,就没什么问题了。
但是,在鼠标放到这个链接上时,浏览器下面还是会显示这个链接的地址:
javascript:void(0)
。比如在Chrome中,对于追求完美的你来说,显示地址的小白条会破坏页面的整体感,这时候,你就只好用设置a的默认样式+去掉href属性+绑定click的方法了……
如果你想这么写也不是不可以:
<a href="javascript:undefined">link</a>
<a href="javascript:false">link</a>
<a href="javascript:1">link</a>
<a href="javascript:1+1">link</a>
<a href="javascript:function f(){}">link</a>
但是这样用要小心!虽然在一些浏览器里毫无反应,但是在Firefox里,页面会被表达式的值替换!
至于类似下面这样的,千万别用就对了:
<a href="javascript:document.write('0')">link</a>
<a href="javascript:document.title">link</a>
如果你好奇地试了,那你的页面就会被替换成0
或者网页标题。
END
学习了