It looks like target="_blank" is still alright. It is listed as a browsing context keyword in the latest HTML5 draft.
Conclusion. You can use the target="_blank" attribute if you want your users to click on a link that opens up a new browser tab. The target="_blank" attribute is used inside the opening anchor tag like this.
It should be target="_blank" with an underscore to start the value. As in… Welp, that's correct syntax! In the case of the no-underscore target="blank" , the blank part is just a name.
HTML Link with <a> Element The syntax of the target="_blank" is like below. `URL` is the new address, URL or web page we want to open in a new browser window or tab.
<script>
window.open('http://www.example.com?ReportID=1', '_blank');
</script>
The second parameter is optional and is the name of the target window.
This might help
var link = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
link.href = 'http://www.google.com';
link.target = '_blank';
var event = new MouseEvent('click', {
'view': window,
'bubbles': false,
'cancelable': true
});
link.dispatchEvent(event);
I know this is a done and sorted out deal, but here's what I'm using to solve the problem in my app.
if (!e.target.hasAttribute("target")) {
e.preventDefault();
e.target.setAttribute("target", "_blank");
e.target.click();
return;
}
Basically what is going on here is I run a check for if the link has target=_blank
attribute. If it doesn't, it stops the link from triggering, sets it up to open in a new window then programmatically clicks on it.
You can go one step further and skip the stopping of the original click (and make your code a whole lot more compact) by trying this:
if (!e.target.hasAttribute("target")) {
e.target.setAttribute("target", "_blank");
}
If you were using jQuery to abstract away the implementation of adding an attribute cross-browser, you should use this instead of e.target.setAttribute("target", "_blank")
:
jQuery(event.target).attr("target", "_blank")
You may need to rework it to fit your exact use-case, but here's how I scratched my own itch.
Here's a demo of it in action for you to mess with.
(The link in jsfiddle comes back to this discussion .. no need a new tab :))
I personally prefer using the following code if it is for a single link. Otherwise it's probably best if you create a function with similar code.
onclick="this.target='_blank';"
I started using that to bypass the W3C's XHTML strict test.
This is how I do it with jQuery. I have a class for each link that I want to be opened in new window.
$(function(){
$(".external").click(function(e) {
e.preventDefault();
window.open(this.href);
});
});
You can extract the href from the a tag:
window.open(document.getElementById('redirect').href);
This might help you to open all page links:
$(".myClass").each(
function(i,e){
window.open(e, '_blank');
}
);
It will open every <a href="" class="myClass"></a>
link items to another tab like you would had clicked each one.
You only need to paste it to browser console. jQuery framework required
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With