/*
* For all links in the current page...
*/
$(document.links).filter(function() {
/*
* ...keep them without `target` already setted...
*/
return !this.target;
}).filter(function() {
/*
* ...and keep them are not on current domain...
*/
return this.hostname !== window.location.hostname ||
/*
* ...or are not a web file (.pdf, .jpg, .png, .js, .mp4, etc.).
*/
/\.(?!html?|php3?|aspx?)([a-z]{0,3}|[a-zt]{0,4})$/.test(this.pathname);
/*
* For all link kept, add the `target="_blank"` attribute.
*/
}).attr('target', '_blank');
17 回答
您可以通过本机javascript代码执行此操作,如下所示:
JSFiddle Code
对于鬼降价使用:
在这里找到它:https://cmatskas.com/open-external-links-in-a-new-window-ghost/
这对我有用:[页面链接](你的网址在这里“(目标| _blank)”)
就Markdown语法而言,如果你想要详细说明,你只需要使用HTML .
大多数Markdown发动机我都没有削减它 . (例如,StackOverflow引擎 . )然后,无论如何,它们都通过HTML白名单过滤器运行整个输出,因为即使仅Markdown文档也可以轻松包含XSS攻击 . 因此,如果您或您的用户想要创建
_blank
链接,那么他们可能仍然可以 .如果这是您经常使用的功能,那么创建自己的语法可能是有意义的,但它通常不是一个重要的功能 . 如果我想在新窗口中启动该链接,我将自己点击它,谢谢 .
Kramdown支持它 . 它与标准Markdown语法兼容,但也有许多扩展 . 你会像这样使用它:
我不认为有降价功能 .
如果您想要使用JavaScript自动打开指向您自己网站之外的链接,可能还有其他选项可用 .
jsFiddle .
如果你使用的是jQuery,那就简单了......
jsFiddle .
使用Markdown-2.5.2,您可以使用:
在我的项目中,我正在这样做,它工作正常:
Link
但并非所有解析器都允许您这样做 .
我正在使用Grav CMS,这非常有效:
车身/内容:
Some text[1]
车身/参考:
[1]: http://somelink.com/?target=_blank
只需确保首先传递target属性,如果链接中有其他属性,则将它们复制/粘贴到引用URL的末尾 .
也可以作为直接链接:
[Go to this page](http://somelink.com/?target=_blank)
没有简单的方法可以做到这一点,就像@alex已经注意到你需要使用JavaScript一样 . 他的答案是最好的解决方案,但为了优化它,您可能只想过滤后内容链接 .
该代码与IE8兼容,您可以将其添加到页面底部 . 请注意,您需要将“.post-content a”更改为您用于帖子的课程 .
如下所示:http://blog.hubii.com/target-_blank-for-links-on-ghost/
一个全局解决方案是将
<base target="_blank">
放入页面的<head>
元素中 . 这有效地为每个锚元素添加了默认目标 . 我使用markdown在基于Wordpress的网站上创建内容,我的主题定制器将让我将代码注入每个页面的顶部 . 如果你的主题不是't do that, there'因此,您无法将链接属性添加到Markdown URL,这是不正确的 . 要添加属性,请检查正在使用的基础markdown解析器以及它们的扩展名 .
特别是,pandoc具有启用link_attributes的扩展名,允许链接中的标记 . 例如
对于来自R的人(例如使用
rmarkdown
,bookdown
,blogdown
等),这是您想要的语法 .对于那些不使用R的人,你可能需要在
pandoc
的pandoc
调用中enable the extensionNote: 这与kramdown parser的支持不同,后者是上面接受的答案之一 . 特别要注意的是,kramdown与pandoc不同,因为它需要冒号 -
:
- 在大括号的开头 -{}
,例如特别是:
尝试使用PHP实现markdown时遇到了这个问题 .
由于使用markdown创建的用户生成的链接需要在新选项卡中打开,但站点链接需要保留在选项卡中,我更改了markdown以仅生成在新选项卡中打开的链接 . 因此,并非页面上的所有链接都链接出来,只有那些使用markdown的链接 .
在markdown中,我将所有链接输出更改为
<a target='_blank' href="...">
,这很容易使用find / replace .我不同意保持在一个浏览器选项卡中更好的用户体验 . 如果您希望人们留在您的网站上,或者回来阅读该文章,请在新标签中将其发送出去 .
在@ davidmorrow的答案的基础上,将此javascript投入您的网站,并将外部链接转换为与target = _blank的链接:
您可以使用{[attr] =“[prop]”}添加任何属性
例如[Google](http://www.google.com)
完成的亚历克斯回答(2010年12月13日)
使用此代码可以实现更智能的注入目标:
您可以通过在
(?!html?|php3?|aspx?)
group construct中添加更多扩展来更改正则表达式异常(在此处理解此正则表达式:https://regex101.com/r/sE6gT9/3) .对于没有jQuery版本,请检查以下代码:
仅使用GNU sed和make自动进行外部链接
如果有人想系统地为所有外部链接做这件事,CSS is no option . 但是,一旦从Markdown创建(X)HTML,就可以运行以下sed命令:
通过将
sed
命令添加到makefile
可以进一步自动化 . 有关详细信息,请参阅my website上的GNU make或see how I have done that .