70

I am using this bit of jQuery code to get href of the link:

var url = $(this).attr('href');

-- and this bit of code to go to that href:

window.location = url;

Everything is just the way I want it, except the new page opens in the same window as the previous one, and I want it to open in a new window or tab (something that in plain html would have been achieved by using target="_blank" formula).

Question: How can I open the href in the new window or tab with jQuery?

Thank you for your help!

Dimitri Vorontzov
  • 7,834
  • 12
  • 48
  • 76

8 Answers8

94

You need to open a new window:

window.open(url);

https://developer.mozilla.org/en-US/docs/DOM/window.open

Christopher Armstrong
  • 7,907
  • 2
  • 26
  • 28
75

Use,

var url = $(this).attr('href');
window.open(url, '_blank');

Update:the href is better off being retrieved with prop since it will return the full url and it's slightly faster.

var url = $(this).prop('href');
brenjt
  • 15,997
  • 13
  • 77
  • 118
10

Question: How can I open the href in the new window or tab with jQuery?

var url = $(this).attr('href').attr('target','_blank');
defau1t
  • 10,593
  • 2
  • 35
  • 47
4

The .ready function is used to insert the attribute once the page has finished loading.

$(document).ready(function() {
     $("class name or id a.your class name").attr({"target" : "_blank"})
})
Abela
  • 1,225
  • 3
  • 19
  • 42
  • 2
    Just a heads-up for future readers: I was using `jQuery("a").prop("target", "_blank");` without enclosing it in `$document.ready` and it wasn't working in Chrome, but once I enclosed it in the `$document.ready()` call, it started working. – Nathan Wailes Mar 12 '18 at 17:33
4

Detect if a target attribute was used and contains "_blank". For mobile devices that don't like "_blank", this is a reliable alternative.

    $('.someSelector').bind('touchend click', function() {

        var url = $('a', this).prop('href');
        var target = $('a', this).prop('target');

        if(url) {
            // # open in new window if "_blank" used
            if(target == '_blank') { 
                window.open(url, target);
            } else {
                window.location = url;
            }
        }           
    });
recurse
  • 624
  • 6
  • 15
1

If you want to create the popup window through jQuery then you'll need to use a plugin. This one seems like it will do what you want:

http://rip747.github.com/popupwindow/

Alternately, you can always use JavaScript's window.open function.

Note that with either approach, the new window must be opened in response to user input/action (so for instance, a click on a link or button). Otherwise the browser's popup blocker will just block the popup.

aroth
  • 54,026
  • 20
  • 135
  • 176
  • Thank you. No, not a pop-up. Just a normal window. Normally I would just let html do the job, but a prior bit of code I use in the same menu disables the default behavior for all the links. – Dimitri Vorontzov Jul 13 '11 at 02:43
0

Try using the following code.

$(document).ready(function(){
    $("a[@href^='http']").attr('target','_blank');
});
Yogesh Prajapati
  • 4,770
  • 2
  • 36
  • 77
Lähîrü
  • 1
  • 1
0
 url='/controller/action';  
 window.open(location.origin+url,'_blank');
Mahdi Porkar
  • 211
  • 2
  • 8