有没有办法在Markdown中创建一个在新窗口中打开的链接?如果不是,您建议使用什么语法来完成此操作?我将把它添加到我使用的markdown编译器中。我认为这应该是一个选择。


当前回答

你可以通过本地javascript代码这样做:

 
var pattern = /a href=/g;
var sanitizedMarkDownText = rawMarkDownText.replace(pattern,"a target='_blank' href=");

JSFiddle Code

其他回答

幽灵降价使用:

[Google](https://google.com" target="_blank)

在这里找到它: https://cmatskas.com/open-external-links-in-a-new-window-ghost/

在我的项目中,我这样做,它工作得很好:

[Link](https://example.org/ "title" target="_blank")

Link

但并非所有解析器都允许这样做。

所以,这不是完全正确的,你不能添加链接属性Markdown URL。要添加属性,请检查正在使用的底层markdown解析器及其扩展。

特别是,pandoc有一个扩展来启用link_attributes,它允许在链接中进行标记。如。

[Hello, world!](http://example.com/){target="_blank"}

对于那些来自R的(例如使用rmarkdown, bookdown, blogdown等等),这是你想要的语法。 对于那些不使用R的用户,你可能需要在调用pandoc时使用+link_attributes来启用扩展

注意:这与kramdown解析器的支持不同,后者是上面接受的答案之一。特别要注意的是,kramdown与pandoc不同,因为它需要一个冒号——:——在花括号的开头——{},例如。

[link](http://example.com){:hreflang="de"}

特别是:

# Pandoc
{ attribute1="value1" attribute2="value2"}

# Kramdown
{: attribute1="value1" attribute2="value2"}
 ^
 ^ Colon

不是一个直接的答案,但可能会帮助一些人在这里结束。

如果你正在使用GatsbyJS,有一个插件可以自动在markdown中添加target="_blank"到外部链接。

它被称为gatsby-remark-external-links,用法如下:

Yarn添加gatsby-remark-external-links

plugins: [      
  {
    resolve: `gatsby-transformer-remark`,
    options: {
      plugins: [{
        resolve: "gatsby-remark-external-links",
        options: {
          target: "_blank",
          rel: "noopener noreferrer"
        }
      }]
    }
  },

它还负责rel="noopener noreferrer"。

如果需要更多选项,请参考文档。

我在尝试使用PHP实现markdown时遇到了这个问题。

由于用户生成的链接创建markdown需要在一个新的选项卡中打开,但网站链接需要留在选项卡中,我改变了markdown,只生成在一个新的选项卡中打开的链接。所以不是所有的链接在页面上链接,只是那些使用markdown。

在markdown我改变了所有的链接输出为<a target='_blank' href="…>,这很容易使用查找/替换。