Reputation: 4927
I have a anchor link like
<a id="myanchor" href="http://google.com" target="_blank">Google</a>
How to open href target in a new tab programatically?
Upvotes: 61
Views: 142668
Reputation: 5842
You cannot open in a new tab programmatically, it's a browser functionality. You can open a link in an external window . Have a look here
Upvotes: -1
Reputation: 449
It worked for me:
window.location = $('#myanchor').attr('href');
Upvotes: 1
Reputation: 21
$(":button").click(function () {
$("#anchor_google")[0].click();
});
Upvotes: 0
Reputation: 2834
window.open($('#myanchor').attr('href'));
$('#myanchor')[0].click();
Upvotes: 2
Reputation: 2937
Even though this post is caput, I think it's an excellent demonstration of some walls that one can run into with jQuery, i.e. thinking click()
actually clicks on an element, rather than just sending a click event bubbling up through the DOM. Let's say you actually need to simulate a click event (i.e. for testing purposes, etc.) If that's the case, provided that you're using a modern browser you can just use HTMLElement.prototype.click
(see here for method details as well as a link to the W3 spec). This should work on almost all browsers, especially if you're dealing with links, and you can fall back to window.open
pretty easily if you need to:
var clickLink = function(linkEl) {
if (HTMLElement.prototype.click) {
// You'll want to create a new element so you don't alter the page element's
// attributes, unless of course the target attr is already _blank
// or you don't need to alter anything
var linkElCopy = $.extend(true, Object.create(linkEl), linkEl);
$(linkElCopy).attr('target', '_blank');
linkElCopy.click();
} else {
// As Daniel Doezema had said
window.open($(linkEl).attr('href'));
}
};
Upvotes: 20
Reputation: 52518
There's a difference in invoking the click
event (does not do the redirect), and navigating to the href
location.
Navigate:
window.location = $('#myanchor').attr('href');
Open in new tab or window:
window.open($('#myanchor').attr('href'));
invoke click event (call the javascript):
$('#myanchor').click();
Upvotes: 26