怎么拦截页面上所有A标签的跳转

发布于 2022-09-12 13:19:36 字数 241 浏览 8 评论 0

怎么监听拦截页面a标签的跳转事件,拦截之后做处理在跳转

<a href="a.html"></a>
<a href="a.html"></a>
<a href="a.html"></a>
<a href="a.html"></a>
...

一个页面可能有上百个a标签,
我想统一拦截,做一些处理在跳转,可以吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

明明#如月 2022-09-19 13:19:36

不太推荐上面提供的方法,因为如果有新的 a 标签加入,
就无法触发定义的事件。所以应该尝试通过事件委托的方式进行处理。

document.body.addEventListener('click', function () {
    // 兼容处理
    var target = event.target || event.srcElement;
    // 判断是否匹配目标元素
    if (target.nodeName.toLocaleLowerCase() === 'a') {
        console.log('当前点击的 a 标签: ', target);

        // 对捕获到的 a 标签进行处理,需要先禁止它的跳转行为
        if (event.preventDefault) {
            event.preventDefault();
        } else {
            window.event.returnValue = true;
        }

        // 处理完 a 标签的内容,重新触发跳转,根据原来 a 标签页 target 来判断是否需要新窗口打开
        
        var url = target.getAttribute("href")
        if (target.getAttribute("target") === '_blank') {
            window.open(url)
        } else {
            window.location.href = url
        }
    }
});
薄荷港 2022-09-19 13:19:36
$('body').on('click','a',function(event){
    event.preventDefault();
    doYourThings();
})
前事休说 2022-09-19 13:19:36

js 控制跳转?

流殇 2022-09-19 13:19:36

选中全部 a 标签,然后拦截它们的点击事件:

const clickHandler = event => {
    // 阻止 a 标签点击事件的默认行为,即页面跳转
    event.preventDefault();
    
    // 进行你需要的处理
    // ...
};

const aTags = document.getElementsByTagName('a');

// 借用 Array.prototype.forEach 遍历处理 选到的 a 标签
Array.prototype.forEach.bind(aTags)(a => {
    a.addEventListener('click', clickHandler);
});
↘人皮目录ツ 2022-09-19 13:19:36
var aTags = document.getElementsByTagName("a")
for (var i = 0; i < aTags.length; i++) {
    aTags[i].onclick = function (e) {
        e.preventDefault();
    }
}
嗼ふ静 2022-09-19 13:19:36

冒泡了解一下

予囚 2022-09-19 13:19:36
document.querySelectorAll('a').forEach(a=>a.onclick=()=>{
    const href= a.getAttribute('href')
    console.log('我被点击了=>',href,a)
    if(href ==='/') return location.pathname = 'www.baidu.com'
    event.preventDefault();
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文