js全局监听a标签跳转前拦截统一跳转到指定页面进行数据处理
JavaScipt
2023-02-17 10:49:15
在现有大多数阅读性文章、博客等内容,不单有图文结合的形式让内容更加饱满更有关联链接来充实文章的真实、准确性。那么当这些连接进行跳转离开网站时,我们要如何确认即将前往网站的安全性呢?
跳转效果演示——点击进入码云官网
本文就该问题,使用js代码全局监听a标签跳转前进行跳转拦截。提取跳转连接,统一跳转到指定页面进行提示及跳转链接安全审核。
先来看看完整代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<a href="https://tool.xuexiareas.com/" target="_blank">六月初工具站</a>
<script>
document.body.addEventListener("click",function (event) {
var target = event.target || event.srcElement; // 兼容处理
if (target.nodeName.toLocaleLowerCase() === "a") { // 判断是否匹配目标元素
if (event.preventDefault) { // 对捕获到的 a 标签进行处理
event.preventDefault();
} else {
window.event.returnValue = true;
}
choosePush(target); // 处理完 a 标签的内容,重新触发跳转,根据原来 a 标签页 target 来判断是否需要新窗口打开
}
}.bind(this)
);
function choosePush(el) {
const target = el.getAttribute("target");
const href = el.getAttribute("href");
if (target === "_blank") {
window.open('https://www.xuexiareas.com/link.html?target='+ encodeURIComponent(href));
} else {
window.location.href = href;
}
}
</script>
</body>
</html>
js代码解析:
1、对body进行全局监听
2、当body区域有点击效果时,提取点击的节点是否是a标签
3、阻止默认a标签的原生跳转
4、提取a标签的相关数据,进行自定义从新跳转
通过以上四个步骤,js实现了对全局a标签的跳转监听、阻止效果。提取到跳转参数后,可以统一跳转到指定路径去进行二次确认跳转及跳转路径安全的验证。
六月初字帖坊小程序
你想要的字帖模板及工具,这里都有!
877篇文章
3128人已阅读