Can I create links with 'target="_blank"' in Markdown?
Solution 1
As far as the Markdown syntax is concerned, if you want to get that detailed, you'll just have to use HTML.
<a href="http://example.com/" target="_blank">Hello, world!</a>
Most Markdown engines I've seen allow plain old HTML, just for situations like this where a generic text markup system just won't cut it. (The StackOverflow engine, for example.) They then run the entire output through an HTML whitelist filter, regardless, since even a Markdown-only document can easily contain XSS attacks. As such, if you or your users want to create _blank
links, then they probably still can.
If that's a feature you're going to be using often, it might make sense to create your own syntax, but it's generally not a vital feature. If I want to launch that link in a new window, I'll ctrl-click it myself, thanks.
Solution 2
Kramdown supports it. It's compatible with standard Markdown syntax, but has many extensions, too. You would use it like this:
[link](url){:target="_blank"}
Solution 3
I don't think there is a markdown feature.
Though there may be other options available if you want to open links which point outside your own site automatically with JavaScript.
var links = document.links;
for (var i = 0, linksLength = links.length; i < linksLength; i++) {
if (links[i].hostname != window.location.hostname) {
links[i].target = '_blank';
}
}
If you're using jQuery it's a tad simpler...
$(document.links).filter(function() {
return this.hostname != window.location.hostname;
}).attr('target', '_blank');
Solution 4
With Markdown v2.5.2, you can use this:
[link](URL){:target="_blank"}
Solution 5
So, it isn't quite true that you cannot add link attributes to a Markdown URL. To add attributes, check with the underlying markdown parser being used and what their extensions are.
In particular, pandoc
has an extension to enable link_attributes
, which allow markup in the link. e.g.
[Hello, world!](http://example.com/){target="_blank"}
- For those coming from R (e.g. using
rmarkdown
,bookdown
,blogdown
and so on), this is the syntax you want. - For those not using R, you may need to enable the extension in the call to
pandoc
with+link_attributes
Note: This is different than the kramdown
parser's support, which is one the accepted answers above. In particular, note that kramdown differs from pandoc since it requires a colon -- :
-- at the start of the curly brackets -- {}
, e.g.
[link](http://example.com){:hreflang="de"}
In particular:
# Pandoc
{ attribute1="value1" attribute2="value2"}
# Kramdown
{: attribute1="value1" attribute2="value2"}
^
^ Colon
ma11hew28
Updated on October 08, 2021Comments
-
ma11hew28 over 2 years
Is there a way to create a link in Markdown that opens in a new window? If not, what syntax do you recommend to do this? I'll add it to the markdown compiler I use. I think it should be an option.