How to open a URL in new tab instead of new window programatically?
Asked
Active
Viewed 7.7e+01k times
329
-
9`` but it's up to the user's browser preferences. – elclanrs Nov 08 '13 at 04:48
-
41Thats not programatically... – FabianCook Nov 08 '13 at 04:52
-
@FabianCook It's a programming language syntax... so I'd call it programmatic! – nmz787 Jul 22 '20 at 18:14
-
Mmmm, actually in this question the people answer most well the question instead the question marked as link in the top – Fernando Torres Mar 02 '21 at 02:19
6 Answers
523
Use window.open()
:
var win = window.open('http://stackoverflow.com/', '_blank');
if (win) {
//Browser has allowed it to be opened
win.focus();
} else {
//Browser has blocked it
alert('Please allow popups for this website');
}
Depending on the browsers implementation this will work
There is nothing you can do to make it open in a window rather than a tab.

milosmns
- 3,595
- 4
- 36
- 48

FabianCook
- 20,269
- 16
- 67
- 115
-
3
-
3It's a special name of a browser window that will create a new window every time, alternatively you could use a specific name like "login_screen", if the window is already loaded it will reload the content with the URL you have provided – FabianCook Feb 16 '17 at 10:49
-
5`window.open()` would cause the popup warning which is an unwanted user experience. Instead introduce a hidden `` somewhere and perform a click using `.click()` For ex: `document.getElementById('click_me').click()` – nehem Feb 26 '20 at 03:53
217
This is as simple as this.
window.open('_link is here_', 'name');
Function description:
name
is a name of the window. Following names are supported:
_blank
- URL is loaded into a new tab. This is default._parent
- URL is loaded into the parent frame_self
- URL replaces the current page_top
- URL replaces any framesets that may be loaded

The Codesee
- 3,714
- 5
- 38
- 78

JaiSat
- 2,356
- 1
- 14
- 15
-
6For security, one could add the "noopener" and "noreferrer" window features: window.open("url", "_blank", "noopener,noreferrer"); – kas Jun 03 '20 at 05:00
74
if you mean to opening all links on new tab, try to use this jquery
$(document).on('click', 'a', function(e){
e.preventDefault();
var url = $(this).attr('href');
window.open(url, '_blank');
});

Lafif Astahdziq
- 3,788
- 29
- 38
-
@Vicky is your `a` element appended by other event? May you need to change `.click` with `.on('click'` – Lafif Astahdziq Oct 20 '15 at 01:12
-
i am trying to implement same logic using your answer which works but when i try to right click and do open link in new tab it doesnt. any idea how can i fix that? – mike Jan 02 '18 at 20:23
46
var url = "http://www.example.com";
window.open(url, '_blank');

WSBT
- 33,033
- 18
- 128
- 133

codebreaker
- 1,465
- 1
- 12
- 18
28
You can easily create a new tab; do like the following:
function newTab() {
var form = document.createElement("form");
form.method = "GET";
form.action = "http://www.example.com";
form.target = "_blank";
document.body.appendChild(form);
form.submit();
}

Shane Reustle
- 8,633
- 8
- 40
- 51

Koffy
- 768
- 8
- 19
-
Hi dude.. when I open like this im getting like firefox prevented this site from opening popup.... – sarathkumar Sep 04 '14 at 10:34
-
3Amend your implementation to be user-driven (i.e. Click a link) and not self-executing (i.e. On page load) ... then praise the righteous popup blocker – Koffy Nov 02 '14 at 15:20
15
I know your question does not specify if you are trying to open all a tags in a new window or only the external links.
But in case you only want external links to open in a new tab you can do this:
$( 'a[href^="http://"]' ).attr( 'target','_blank' )
$( 'a[href^="https://"]' ).attr( 'target','_blank' )

Daniel Falabella
- 578
- 4
- 13
-
It treats www.google.com as an internal link.. How can i open it in a new tab ? or Add http – tkamath99 Nov 28 '19 at 06:07