ma1*_*w28 400 html markdown hyperlink target new-window
有没有办法在Markdown中创建一个在新窗口中打开的链接?如果没有,您建议使用什么语法来执行此操作.我将它添加到我使用的markdown编译器中.我认为这应该是一种选择.
Mat*_*chu 322
就Markdown语法而言,如果你想要详细说明,你只需要使用HTML.
<a href="http://example.com/" target="_blank">Hello, world!</a>
Run Code Online (Sandbox Code Playgroud)
我见过的大多数Markdown引擎都允许使用普通的旧HTML,只是在这种情况下,通用文本标记系统不会削减它.(例如,StackOverflow引擎.)然后,他们通过HTML白名单过滤器运行整个输出,因为即使仅Markdown文档也可以轻松包含XSS攻击.因此,如果您或您的用户想要创建_blank链接,那么他们可能仍然可以.
如果这是您经常使用的功能,那么创建自己的语法可能是有意义的,但它通常不是一个重要的功能.如果我想在新窗口中启动该链接,我将自己点击它,谢谢.
far*_*noy 314
Kramdown支持它.它与标准Markdown语法兼容,但也有许多扩展.你会像这样使用它:
[link](url){:target="_blank"}
Run Code Online (Sandbox Code Playgroud)
ale*_*lex 106
我不认为有降价功能.
如果您想要使用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';
}
}
Run Code Online (Sandbox Code Playgroud)
如果你使用的是jQuery,那就简单了......
$(document.links).filter(function() {
return this.hostname != window.location.hostname;
}).attr('target', '_blank');
Run Code Online (Sandbox Code Playgroud)
med*_*igo 45
使用Markdown-2.5.2,您可以使用:
[link](url){:target="_blank"}
Run Code Online (Sandbox Code Playgroud)
您可以通过本机javascript代码执行此操作,如下所示:
var pattern = /a href=/g;
var sanitizedMarkDownText = rawMarkDownText.replace(pattern,"a target='_blank' href=");
Run Code Online (Sandbox Code Playgroud)
小智 6
在我的项目中我正在做这个并且它工作正常:
[Link](https://example.org/ "title" target="_blank")
Run Code Online (Sandbox Code Playgroud)
但并非所有解析器都允许您这样做.
对于鬼降价使用:
[Google](https://google.com" target="_blank)
Run Code Online (Sandbox Code Playgroud)
在这里找到它:https: //cmatskas.com/open-external-links-in-a-new-window-ghost/
小智 6
我正在使用Grav CMS,这非常有效:
车身/内容:
Some text[1]
车身/参考:
[1]: http://somelink.com/?target=_blank
只需确保首先传递target属性,如果链接中有其他属性,则将它们复制/粘贴到引用URL的末尾.
也可以作为直接链接:
[Go to this page](http://somelink.com/?target=_blank)
因此,不能将链接属性添加到Markdown URL并不是很正确。要添加属性,请检查所使用的基础markdown解析器及其扩展名。
尤其是pandoc具有enable的扩展名link_attributes,它允许在链接中进行标记。例如
[Hello, world!](http://example.com/){target="_blank"}
Run Code Online (Sandbox Code Playgroud)
rmarkdown,bookdown,blogdown等),这是你想要的语法。pandoc+link_attributes注意:这与kramdown解析器的支持不同,后者是上面接受的答案之一。特别要注意的是,kramdown与pandoc有所不同,因为它需要一个冒号:--在大括号的开头- {}例如
[link](http://example.com){:hreflang="de"}
Run Code Online (Sandbox Code Playgroud)
特别是:
# Pandoc
{ attribute1="value1" attribute2="value2"}
# Kramdown
{: attribute1="value1" attribute2="value2"}
^
^ Colon
Run Code Online (Sandbox Code Playgroud)
没有简单的方法可以做到这一点,就像@alex 指出的那样,您需要使用 JavaScript。他的回答是最好的解决方案,但为了优化它,您可能只想过滤到帖子内容链接。
<script>
var links = document.querySelectorAll( '.post-content a' );
for (var i = 0, length = links.length; i < length; i++) {
if (links[i].hostname != window.location.hostname) {
links[i].target = '_blank';
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
该代码与 IE8+ 兼容,您可以将其添加到页面底部。请注意,您需要将“.post-content a”更改为您用于帖子的类。
如下所示:http : //blog.hubii.com/target-_blank-for-links-on-ghost/
不是直接的答案,但可能会帮助一些人到此为止。
如果您使用GatsbyJS,有一个插件可以自动添加target="_blank"到Markdown中的外部链接。
它被称为gatsby-remark-external-links并且使用如下:
yarn add gatsby-remark-external-links
plugins: [
{
resolve: `gatsby-transformer-remark`,
options: {
plugins: [{
resolve: "gatsby-remark-external-links",
options: {
target: "_blank",
rel: "noopener noreferrer"
}
}]
}
},
Run Code Online (Sandbox Code Playgroud)
它还负责rel="noopener noreferrer".
如果您需要更多选项,请参考文档。
| 归档时间: |
|
| 查看次数: |
200330 次 |
| 最近记录: |