vue路由跳转打开新页签
时间: 2024-08-14 18:03:21 浏览: 71
Vue路由跳转问题记录详解
在Vue中,如果你想要在路由跳转时打开一个新页签,通常使用的是`<router-link>`组件的`target`属性来实现。`target`属性用来指定链接打开的方式,它可以设置为`_blank`,这样点击链接时就会在新的页签中打开目标页面。
以下是一个简单的示例代码:
```html
<router-link to="/some-path" target="_blank">打开新页签</router-link>
```
在这个例子中,当用户点击这个`<router-link>`组件时,浏览器会在新的页签中打开`/some-path`对应的路由页面。
需要注意的是,使用`<router-link>`的`target`属性实现新页签打开功能时,它实际上是在HTML中创建了一个`<a>`标签,`target="_blank"`是`<a>`标签的标准属性。但是,当配合Vue Router的编程式导航时,比如使用`this.$router.push`方法,你需要手动创建一个`<a>`标签,并设置其`target`属性为`_blank`,因为`this.$router.push`本身并不会创建`<a>`标签。
示例代码如下:
```javascript
this.$router.push('/some-path').catch(err => {});
```
这段代码并不会打开一个新页签,而是进行路由跳转。如果你需要在编程式导航中打开新页签,可以这样做:
```javascript
const a = document.createElement('a');
a.href = this.$router.resolve('/some-path').href;
a.target = '_blank';
document.body.appendChild(a).click();
```
这段代码会创建一个新的`<a>`标签,设置其`href`属性为目标路由的完整路径,并将其`target`属性设置为`_blank`,然后将这个`<a>`标签附加到`body`上,并模拟点击事件以在新页签中打开目标路由。
阅读全文