Vue.js, How to open a link in a new tab
In this tutorial, we are going to learn about how to open a link in a new tab in Vue.js app.
Normally, we create a link in Vue app using the <route-link>
component with the to
attribute.
<router-link to="/contact">Contact</router-link>
If we click on the above link, it will open a Contact
page in the same tab.
Opening the link in a new tab
To open the link in a new tab, we need to add the target
attribute with a value _blank
to the <router-link>
component.
Here is an example:
<router-link to="/contact" target="_blank">Contact</router-link>
In programmatic navigation, we can open the link in a new tab like this:
<template>
<div id="app">
<button @click="gotoContact()">Contact</button>
</div>
</template>
<script>
export default {
name: "app",
methods: {
gotoContact() {
let route = this.$router.resolve({ path: "/contact" });
window.open(route.href);
},
},
};
</script>
In the example above, we first accessed the full URL of a /contact
page by using the this.$router.resolver()
method then passed it to the window.open()
method.
Opening the external links in a new tab
To open the external link in a new tab, we can use the HTML anchor element <a>
by passing target="_blank"
attribute.
<a href="https://www.google.com" target="_blank">
Google
</a>
If you are using target=_blank
for external links, your page performance may suffer to avoid that you can use rel="noreferrer noopener"
.
<a href="https://www.google.com" target="_blank" rel="noreferrer noopener">
Google
</a>
In programmatic navigation, we can use the window.open()
method to open the external links in a new tab.
Here is an example:
<template>
<div id="app">
<button @click="gotoGoogle()">Google</button>
</div>
</template>
<script>
export default {
name: "app",
methods: {
gotoGoogle() {
window.open("https://www.google.com");
},
},
};
</script>