我刚看到this question 它让我想起了我通常做的一些事情,以防止某些链接的默认操作:
<a href="javascript://">something</a>
然后我用jQuery点击功能处理它。我已经在一些地方看到人们使用
<a href="javascript:void(0)">something</a>
我知道更好的方法是使用
e.preventDefault();
但做我做的事情是错误还是坏事?这实际上是如何运作的?
答案 0 :(得分:5)
这有点不幸,因为如果用户按Ctrl +单击或右键单击并显示“在新标签中打开”,他们将获得一个完全空白的页面。
使用<a href="#">something</a>
加preventDefault
会更好,因为在这种情况下,按住Ctrl +单击会将它们带回到他们所在的页面。
当然,最好的情况是,如果您可以将href
指向实际有意义的页面,则JavaScript会逐渐增强覆盖该有意义默认值的体验。一个很好的例子就是弹出窗口,但是可以做更多的工作来做到这一点。
答案 1 :(得分:3)
这是不好的做法,因为存在更好的机制,即event.preventDefault()
。
此外,javascript:
伪协议只应用于bookmarklet。