如果加的这个事件是异步执行的话是被拦截的,改为同步即可
第一部分代码跳转会被拦截,第二部分的就不会了
<template>
<div>
<a @click="openPushProduct(url)" target="_blank" onfocus="this.blur()">新标签页打开</a>
</div>
</template>
<script>
import { checkLogin } from "../../api/user";
export default {
data() {
return {
url: ""
};
},
methods: {
async openPushProduct(url) {
let { data: res } = await checkLogin();
if (res.code == 200) {
window.open(url);
} else if (res.code == 2003) {
this.$message.error("请先登录");
setTimeout(() => {
this.$store.commit("LOGIN_MODAL_TOGGLE", {
toggle: true,
loginType: 2
});
}, 1000);
} else {
this.$message.error(res.msg);
}
},
}
};
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<a @click="openPushProduct(url)" target="_blank" onfocus="this.blur()">新标签页打开</a>
</div>
</template>
<script>
import { checkLogin } from "../../api/user";
export default {
data() {
return{
url:'',
isLogin:false
}
},
created() {
this.checkLogin();
},
methods: {
async checkLogin() {
let { data: res } = await checkLogin();
if (res.code == 200) {
this.isLogin = true;
} else if (res.code == 2003) {
this.isLogin = false;
} else {
this.$message.error(res.msg);
}
},
openPushProduct(url) {
if (this.isLogin) {
window.open(url);
} else {
this.$message.error("请先登录");
setTimeout(() => {
this.$store.commit("LOGIN_MODAL_TOGGLE", {
toggle: true,
loginType: 2
});
}, 1000);
}
}
}
};
</script>
<style lang="scss" scoped>
</style>