有没有办法在Markdown中创建一个在新窗口中打开的链接?如果不是,您建议使用什么语法来完成此操作?我将把它添加到我使用的markdown编译器中。我认为这应该是一个选择。
当前回答
我在尝试使用PHP实现markdown时遇到了这个问题。
由于用户生成的链接创建markdown需要在一个新的选项卡中打开,但网站链接需要留在选项卡中,我改变了markdown,只生成在一个新的选项卡中打开的链接。所以不是所有的链接在页面上链接,只是那些使用markdown。
在markdown我改变了所有的链接输出为<a target='_blank' href="…>,这很容易使用查找/替换。
其他回答
在《Laravel》中,我是这样解决的:
$post->text= Str::replace('<a ', '<a target="_blank"', $post->text);
Not适用于特定链接。编辑Markdown文本中的所有链接。(对我来说还好)
仅对外部链接自动,使用GNU sed & make
如果有人想系统地为所有外部链接做这件事,CSS是没有选择的。然而,一旦Markdown创建了(X)HTML,就可以运行下面的sed命令:
sed -i 's|href="http|target="_blank" href="http|g' index.html
通过将上述sed命令添加到makefile中,可以进一步实现自动化。有关详细信息,请参阅GNU make或在我的网站上查看我是如何做的。
一个全局解决方案是放置<base target="_blank"> 到页面的<head>元素中。这有效地将默认目标添加到每个锚元素。我使用markdown在我的基于wordpress的网站上创建内容,我的主题定制器将允许我将该代码注入到每个页面的顶部。如果您的主题不能做到这一点,可以使用插件
Kramdown对此表示支持。它与标准Markdown语法兼容,但也有许多扩展。你可以这样使用它:
[link](url){:target="_blank"}
不是一个直接的答案,但可能会帮助一些人在这里结束。
如果你正在使用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"。
如果需要更多选项,请参考文档。