在防止默认值后重新创建自然链接单击事件
Recreating natural link click event after preventing default
$(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
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 为effect Composer创建GodRays效果过程
- 从javascript创建一个列表
- onkeyup无法动态创建多个文本区域
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何访问声音管理器2创建的声音对象
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 使用Facebook live API创建实时视频对象时的隐私设置
- 在动态创建的元素上获取对特定选择器的引用
- 如何创建带有插槽的vue js组件预加载程序
- 如何在创建键时引用来自同一对象的键
- 如何创建JSON数组
- 从html创建一个指令,该指令按类名应用函数
- 使用Javascript创建测验页面
- 如何使用css和javascript创建一个自然的线条
- 在防止默认值后重新创建自然链接单击事件
- 如何创建一个可以自然键入的输入字段,然后它将其转换为HTML
- 为什么我得到自然宽度0动态创建的图像
- 如何将事件附加到在TileMill中创建的自然地球地图数据