Javascript 单击链接时执行异步AJAX调用,然后跟踪链接

Javascript 单击链接时执行异步AJAX调用,然后跟踪链接,javascript,asynchronous,google-analytics,click,Javascript,Asynchronous,Google Analytics,Click,我们的页面上有一个链接,我们希望跟踪其使用情况。目前,它不是一个真正的链接。它是一个标记,具有包含目标的数据属性和绑定到目标的单击处理程序 单击后,我们会将数据发送到Google Analytics,然后在短时间延迟后使用window.location=url触发页面加载,这样我们就可以确定数据已经通过 这种方法是可行的,但它有一个主要缺陷:clickable元素实际上不是一个链接,它的行为只是一部分。例如,我不能使用鼠标滚轮单击它并在单独的选项卡中打开链接(正如您所期望的),或者我不能右键单击

我们的页面上有一个链接,我们希望跟踪其使用情况。目前,它不是一个真正的链接。它是一个
标记,具有包含目标的数据属性和绑定到目标的单击处理程序

单击后,我们会将数据发送到Google Analytics,然后在短时间延迟后使用
window.location=url
触发页面加载,这样我们就可以确定数据已经通过

这种方法是可行的,但它有一个主要缺陷:clickable元素实际上不是一个链接,它的行为只是一部分。例如,我不能使用鼠标滚轮单击它并在单独的选项卡中打开链接(正如您所期望的),或者我不能右键单击它并获得与链接相关的菜单(因为它不是链接)


有没有办法使用
标签获取真实链接的行为、拦截点击事件、与Google Analytics交互,然后在短暂延迟后正常跟踪链接(以确保数据通过),无需重定向自己,也无需丢失功能?

您可以使用
event.preventDefault()
来防止链接被跟踪:

$('a').click(function(e){ 
    e.preventDefault();
    var href = this.href;
    setTimeout(function(){
        window.location = href;
    }, 2000)
});

使用,您不能将
包装在

中吗?这仍然不起作用。中键单击这样的链接仍会在同一选项卡中打开。难道没有办法在链接上使用正确的href并使其自然“执行”吗?我很困惑。点击鼠标中键是什么意思?如果您担心它会在同一个选项卡中打开,为什么不将
target=''u blank'
添加到锚定中呢。然后您可以只添加onclick内联。我在跟踪您吗?如果您使用鼠标滚轮单击链接,在大多数浏览器和计算机上,它将在不同的选项卡中打开,即使它没有target=“\u blank”。这是我经常使用的东西,我想拥有它。如果该机制有效,还意味着可以右键单击链接并单击“在新选项卡中打开”来执行此操作。这仍然无法解决问题。理想的解决方案是,我们不阻止链接执行其自身的行为,而不是强制页面更改。除了页面更改之外,您还希望看到什么行为?我的问题是,如果我使用鼠标滚轮而不是左键单击链接,我希望它在单独的选项卡中打开。只有当click事件没有通过javascript被篡改,或者至少没有停止时,才会发生这种情况。这也意味着,如果我右键单击链接并单击“在新选项卡中打开”,它应该可以正常工作。问题似乎是让鼠标中键单击,而不是执行异步调用。一般来说,我会说,这是让链接在仍然执行ajax调用的情况下保持正常行为。navigator.sendBeacon()API可能有用
<a href="yourawesomewebsite.com" id="gaEvent" target="_blank" onclick="_gaq.push(['_set', 'hitCallback', function(){window.location = this.href;}]); _gaq.push(['_trackEvent','category','action','label']);">
    <div id ="blah"></div>
</a>
$('gaEvent').on('click', function(){
    _gaq.push(['_set', 'hitCallback', function(){
        window.location = url; // you'll still have to define this somewhere
    }]);

    _gaq.push(['_trackEvent','category','action','label']);
});