$(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
});
如何在此示例中模拟默认链接点击行为?我注意到如果我在新选项卡中打开( control + click 或中键单击),它仍会重定向当前选项卡。
我知道我可以捕获每次点击并检测它是否是中间鼠标与左鼠标,但有没有更简单的方法来完成此操作,包括 control + click 等内容?
<小时/> 到目前为止,我看到的唯一选择是将值存储在cookie中,然后在每个页面加载读取cookie,发送分析和删除cookie。
答案 0 :(得分:0)
据我了解,您尝试拦截链接点击事件,发送一些分析数据,然后重新创建点击以继续导航。所以,要做到这一点:
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