链接中不显眼的 JavaScript [重复]

Unobtrusive JavaScript in links [duplicate]

提问人:federico-t 提问时间:6/6/2012 最后编辑:Cœurfederico-t 更新时间:7/9/2019 访问量:99

问:

我想要一个链接来执行 JavaScript 函数(如果 JavaScript 可用)或在属性中输入 URL(如果不是)。href

<a href="http://www.example.com" onclick="example(); return false;">

在此示例中,如果 JavaScript 可用,我想执行并且输入链接,如果 JavaScript 不可用,则转到链接。example()http://www.example.com

虽然这几乎适用于我尝试过的所有浏览器,但在 IE 7 中,无论 JavaScript 是否处于活动状态,它都只是跟随链接。我能做些什么来防止这种情况发生?

javascript html 超链接 unobtrusive-javascript graceful-degradation

评论


答:

0赞 Meisam Mulla 6/6/2012 #1

试试这个:

<a href="http://www.example.com" onclick="example(); event.returnValue=false; return false;">
0赞 Aeolun 6/6/2012 #2

这可能就是你要找的

event.returnValue = 假;

从这里检索: event.preventDefault() 函数在 IE 中不起作用

1赞 Dmitry Pashkevich 6/6/2012 #3

您必须在事件对象上使用 preventDefault() 来阻止默认操作(即导航到链接的 URL)。

由于浏览器中的实现略有不同,因此应编写一个单独的函数来执行此操作,并在事件处理程序中调用它:

function preventDefault(event) {
        if (event.preventDefault) {
            event.preventDefault();
        } else {
            event.returnValue = false;
        }
}

此外,请确保在事件处理程序中返回 false

如果您使用的是任何 JavaScript 库,那么此功能很可能已经存在。

1赞 ValeriiVasin 6/6/2012 #4

将 javascript 与 HTML 分开:)

<a href="http://www.example.com" id='uniq-link'>
$(function () {
    $("#uniq-link").on("click", example);
});

如果 Javascript 不可用 - 一切都会好起来的:)

评论

0赞 Dmitry Pashkevich 6/6/2012
+1,但 OP 没有提到他正在使用 jQuery 或任何其他库
0赞 ValeriiVasin 6/6/2012
现在是时候:)这样做了如果不是:D