vue 实现打开弹框后5秒后自动window.open打开新窗口
时间: 2024-12-01 21:30:28 浏览: 15
在Vue中,你可以结合JavaScript的异步特性(如`Promise`)和定时器(`setTimeout`)来实现这样的功能。下面是一个简单的示例,展示如何在打开一个弹框后等待5秒再自动打开新窗口:
```html
<template>
<div>
<button @click="showModal">显示弹框</button>
<div v-if="isShowingModal">
<!-- 弹框内容 -->
<p>等待5秒...</p>
<button v-loading="'正在加载...'">立即打开新窗口</button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
isShowingModal: false,
};
},
methods: {
showModal() {
this.isShowingModal = true;
// 5秒后关闭弹窗并打开新窗口
setTimeout(() => {
this.isShowingModal = false;
this.openNewWindow();
}, 5000);
},
openNewWindow() {
// 这里使用异步函数或者Promise
this.$nextTick(() => {
window.open('https://example.com', '_blank'); // 新窗口模式需设为 '_blank'
});
},
},
};
</script>
```
在这个例子中,当点击按钮显示弹框后,`setTimeout`会在5秒后执行闭合弹框和打开新窗口的操作。`$nextTick`确保`openNewWindow`在DOM更新完毕后再执行,避免了可能存在的渲染顺序问题。
阅读全文