有没有更好的方法“伪造”链接的href属性?

5

现在我使用的是:

href="javascript:void(0)"

为我的a标签。

然而,我发现这样很乱,并且在鼠标悬停时在FireFox上向用户显示。

我考虑的是用普通的p标签替换我的链接,并在JavaScript中设置事件处理程序。

澄清:

仅适用于现代支持JavaScript的浏览器。我目前还不担心可访问性问题。


1
听起来你刚刚回答了自己的问题。 - iAmClownShoe
1
键盘可访问性怎么办?并非每个人都使用鼠标来浏览页面。 - epascarello
3
禁用/不可用JS的人怎么办? - Marc B
1
你想改变光标吗?你可以使用CSS实现:cursor: pointer - Kyle
2
这对你们来说可能很明显,但是,为什么有人要创建一个不作为链接使用的链接呢? - Sebas
显示剩余4条评论
3个回答

2

HTML:

<a href="">Foo</a>

JS:

var a = document.getElementsByTagName('a');
for(i=0 ; i<a.length ; i++){
    a[i].addEventListener('click', function(e) {
        if (this.href === window.location.href) {
            e.preventDefault();
        }
    });
}

Demo: http://jsfiddle.net/pqNfg/


1
我喜欢这个版本,因为它可以使DOM保持整洁,并将逻辑保留在脚本中。 - Maverick
你的照片吓到我了。我要练习那张脸,以备在走过黑暗小巷时使用。 - user1637281
这是《血腥运动》中的让春丽喊出“Mateeeeeeeeee!!!!!”的结尾场景,主角是让·克劳德·范·达美。 - AlienWebguy
iOS VoiceOver有一个非常讨厌的习惯,会把href为空的链接读成“visited”。 - Corey

2

不确定你想做什么,但你也可以使用 href="#" 并使用不显眼的JavaScript来停止点击事件继续执行。


2
这是一个空的哈希表,但如果您不管理事件,它将弹出浏览器到窗口顶部。 - AlienWebguy
维基参考:http://en.wikipedia.org/wiki/Fragment_identifier 或查看RFC 3986。 - Patrick M
这是最简单的解决方案。 - user1637281
我注意到现在URL中显示了“#”符号。 - user1637281

1

使用event.preventDefault()来禁用任何可能由用户点击发起的链接。

anchorElement.onclick=function(e)
{
    e.preventDefault();}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接