js阻止跳转外部链接
js实现当点击外部链接时,弹出是否离开的提示。点击取消则阻止跳转。
document.addEventListener('click', e => {
const i = e.target.closest('a');
if (!i) return;
const t = new URL(i.href, location.href),
b = t.host !== location.host,
c = t.protocol.startsWith('http');
if (b && c) {
if (!confirm(`即将跳转到外部地址:\n${t.host}\n确定继续吗?`)) {
e.preventDefault()
}
}
})
实现方法:
1,检测是否是a标签,不是则退出。
2,把相对地址变更为绝对地址。
3,验证域名是否相同和是否是http开头的链接。
4,如果是http开头的域名又不同,弹出对话框,如果点击取消,拦截跳转。