是否可以检测链接是否已被JavaScript禁用

Is it possible to detect if a link has been disabled by JavaScript?

本文关键字:是否 JavaScript 禁用 链接 检测      更新时间:2024-05-22

我熟悉在链接中添加.prventDefault()(和return false)以阻止链接继续执行,但有人知道检查链接是否设置为preventDefault(和/或return false)的方法吗?

mockJS中的示例:

$('a').not().preventDefault().click(function() {
  //report that the link has been clicked
}

注意:我不知道是否/可能添加了什么脚本来阻止链接遵循其默认行为。

谢谢,Steve

一个选项是将另一个类应用于您拥有的每种类型的"链接"(转盘、选项卡、hrefs等),然后将用于跟踪的点击处理程序更改为$('linkClass').click(function() {.....});

编辑:我的观点并不是说你必须只使用一个额外的类,但也许在这里使用类作为链接的标志来跟踪它们对你来说是最好的。如果没有看到你的整个代码,我真的无法根据你的需要进行定制,所以我为你保留了它的通用性。

第二版:我只是想更好地澄清一下这个想法。

你要做的是为你的链接设置一个选择器(这个选择器可能需要观察一些不同的ID、类等才能做到这一点)。向该选择器添加一个点击事件处理程序,然后每次点击其中一个链接时,您都会以类的形式添加跟踪标志,以方便您的跟踪代码。

示例:

var $links = $(...[selector stuff]...);
$links.click(function() {
    var $this = $(this);
    $this.addClass("clicked");
    ...do clicked stuff...
    $this.addClass("isActive");
    ...do active stuff...
    $this.removeClass("isActive").addClass("visited");
    ...do visited stuff...
});

通过使用此技术,您还可以稍后检查并查看哪些链接已被单击,以防某些或所有跟踪方法在单击事件处理程序之外运行。

这种技术的另一个优点是在添加和删除类方面的开销很低。许多人对开销如此之少感到惊讶,因为他们一想到类就会本能地想到风格。然而,类是元素最有用的属性之一,只要不添加或删除样式,开销就会非常小(使用类作为标志也是.NET开发中非常常见的做法)。