📅  最后修改于: 2023-12-03 15:23:34.051000             🧑  作者: Mango
在 Vue.js 中,我们可以使用 vue-router 来管理应用程序中的 URL。它支持通过编程的方式导航到不同的 URL,但是默认情况下会在同一标签页中打开指向不同路由的链接。如果我们希望在新的标签页中打开路由,该怎么办呢?接下来,我们将介绍在 Vue.js 应用程序中如何打开路由器并在新标签页中打开链接。
target="_blank"
最简单的方法是在 HTML 中直接添加 target="_blank"
属性,这将在新窗口中打开链接。但是,我们无法编程地控制此方式如何打开链接。
<router-link to="/about" target="_blank">About</router-link>
window.open()
我们可以使用 JavaScript 中的 window.open()
来打开链接并控制在新标签页中打开。如下所示,我们可以使用 window.open()
方法在新标签页中打开路由链接:
window.open('/about', '_blank')
但是,在 Vue.js 应用程序中,如果我们直接使用 window.open()
方法,它将无法在跨域应用程序中打开。这是因为浏览器通常会阻止跨域窗口调用。因此,我们需要使用 this.$router.resolve()
方法获取路由链接的绝对路径,并将其传递给 window.open()
方法。
const aboutUrl = this.$router.resolve({ path: '/about' }).href
window.open(aboutUrl, '_blank')
这个方法可以编程地控制在新标签页中打开链接,但需要更多的 JavaScript 代码。
vue-router-invoke
我们可以使用 vue-router-invoke
插件来更方便地打开链接并控制在新标签页中打开。首先,我们需要安装该插件:
npm install vue-router-invoke
然后,在应用程序中导入该插件并将其安装:
import routerInvoke from 'vue-router-invoke'
Vue.use(routerInvoke)
接下来,我们可以使用 this.$router.invoke()
方法来打开链接并控制在新标签页中打开,如下所示:
this.$router.invoke('/about', { target: '_blank' })
此方法可以非常方便地控制在新标签页中打开链接,而不需要编写过多的 JavaScript 代码。
以上是在 Vue.js 应用程序中打开路由器并在新标签页中打开链接的方法。我们可以根据应用程序的需求选择适合的方法来实现。如果只有少量的链接需要在新标签页中打开,可以使用第一种方式;如果需要在 JavaScript 程序中动态构建链接并控制打开方式,可以使用第二种方式;如果需要更简洁和方便的方式,可以使用第三种方式。