Vue实现a标签点击打开新页面但不触发路由跳转的效果

概要

对于一个a标签,原生效果有点击直接当前页跳转路由,按键(windows为ctrl,ios为command)+ 点击打开路由的新页面这两种效果

注意,第一种效果是a标签自带的,第二种效果是浏览器的行为。

如图为普通a标签和部分属性,点击跳转新路由/newapi,当然同时也会触发newUrl函数

 现在需要阻止a标签原生的点击事件,实现点击触发函数,但当前页面不跳转路由,但是要保留按键+点击打开新页面的效果

实现

 实现方式很简单,

1. Vue有自带的.prevent机制,可以直接绑定到click上即可实现

2. 用原生的js,获取dom,然后将其click事件直接preventDefault。(Vue中避免未渲染,放在nextTick里)

代码:

 nextTick(() => {
    let dom = document.getElementById('apiA')
    dom.onclick = e => {
      console.log(e);
      
      e.preventDefault();
    }
  })

 

posted @ 2023-10-11 09:46  honoka_Gu  阅读(605)  评论(0编辑  收藏  举报