有没有办法在Markdown中创建一个在新窗口中打开的链接?如果不是,您建议使用什么语法来完成此操作?我将把它添加到我使用的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或在我的网站上查看我是如何做的。
其他回答
在Markdown v2.5.2中,你可以这样使用:
[link](URL){:target="_blank"}
我在尝试使用PHP实现markdown时遇到了这个问题。
由于用户生成的链接创建markdown需要在一个新的选项卡中打开,但网站链接需要留在选项卡中,我改变了markdown,只生成在一个新的选项卡中打开的链接。所以不是所有的链接在页面上链接,只是那些使用markdown。
在markdown我改变了所有的链接输出为<a target='_blank' href="…>,这很容易使用查找/替换。
我不认为有降价功能,尽管如果你想用JavaScript自动打开指向你自己网站以外的链接,可能有其他可用的选项。
Array.from(javascript.links)
.filter(link => link.hostname != window.location.hostname)
.forEach(link => link.target = '_blank');
jsFiddle。
如果你正在使用jQuery:
$(document.links).filter(function() {
return this.hostname != window.location.hostname;
}).attr('target', '_blank');
jsFiddle。
如果有人正在寻找一个全局rmarkdown (pandoc)解决方案。
使用Pandoc Lua过滤器
你可以编写自己的Pandoc Lua过滤器,将target="_blank"添加到所有链接:
编写一个Pandoc Lua过滤器,例如links.lua
function Link(element)
if
string.sub(element.target, 1, 1) ~= "#"
then
element.attributes.target = "_blank"
end
return element
end
然后更新你的_output.yml
bookdown::gitbook:
pandoc_args:
- --lua-filter=links.lua
在Header中注入<base target="_blank">
另一种解决方案是使用includes选项在HTML头部部分注入<base target="_blank">:
创建一个新的HTML文件,例如links.html
<base target="_blank">
然后更新你的_output.yml
bookdown::gitbook:
includes:
in_header: links.html
注意:此解决方案还可能为哈希(#)指针/ url打开新选项卡。我还没有用这样的url测试这个解决方案。
不是一个直接的答案,但可能会帮助一些人在这里结束。
如果你正在使用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"。
如果需要更多选项,请参考文档。
推荐文章
- 使伸缩项目正确浮动
- 形式内联内的形式水平在twitter bootstrap?
- 自定义元素在HTML5中有效吗?
- 如何触发自动填充在谷歌Chrome?
- 创建圈div比使用图像更容易的方法?
- 为什么Chrome浏览器不正确地确定页面是在不同的语言,并提供翻译?
- 在网页上用鼠标模拟震颤(例如帕金森病)?
- Bootstrap抛出Uncaught错误:Bootstrap的JavaScript需要jQuery
- 如何改变文本区域的边框颜色:焦点
- 我如何设置背景颜色为文本的宽度,而不是整个元素的宽度,使用CSS?
- 如何删除和清除所有的本地存储数据
- 强制打开“另存为…”弹出打开文本链接点击PDF在HTML
- 如何修改标签文本?
- 我如何用javascript编程点击链接?
- 在HTML中还有其他有用的空格码吗,比如半空格的 , em-spaces, en-spaces等等?