在防止默认值后重新创建自然链接单击事件

Recreating natural link click event after preventing default

本文关键字:创建 自然 链接 事件 单击 默认值 新创建      更新时间:2023-09-26
$(document).on('click','a',function(e){
    e.preventDefault();
    var href = $(this).attr('href');
    sendAnalytics("clicked a link",function(){
        // on success callback, continue with link's redirect
        window.location = href;
        //   or location.assign(href);
    });
    setTimeout(function(){
        window.location = href;
    },5e3); // just incase callback never fires
});

如何模拟此示例中的默认链接单击行为?我注意到,如果我在新选项卡中打开(控制+单击中键(,它仍然会重定向当前选项卡。

我知道我可以捕获每次单击并检测它是鼠标中键还是鼠标左键,但是有没有更简单的方法来实现这一点,包括控制+单击之类的东西?


到目前为止,我看到的唯一选择是将值存储在 cookie 中,然后在每个页面加载时读取 cookie、发送分析和删除 cookie。

据我了解,您正在尝试拦截链接点击事件,发送一些分析数据,然后重新创建点击以继续导航。因此,要做到这一点:

function NewTab(url) {
    var newTab = window.open(url,"_blank");
    newTab.focus();
}
$("a").on("click", function(e) {    // more efficient
    var href = $(this).attr("href");
    if(e.ctrlKey) {   // ctrl to open in a new tab
        sendAnalytics("clicked a link", function() {
            NewTab(href);
        });
        setTimeout(function() {
            location.href = href;
        }, 5e3);
    }
    else {
        sendAnalytcis("clicked a link", function() {
            location.href = href;
        });
        setTimeout(function() {
            location.href = href;
        }
    }
});

首先,我创建一个新的选项卡函数,如果用户已按住 Control 键单击链接,则可以使用该函数。然后我拦截点击,如果按下了控制键,我发送分析,然后在新选项卡中打开链接。 否则,我发送分析,然后重定向当前选项卡。备份仍然存在,以防回调未触发。

作为脚注,重新创建"自然链接点击"的最简单方法是$(this).click();

希望这有帮助!
-CE