前言:
众所周知 md 文档中使用 [链接文本显示内容](URL)
语法来表示超链接,但是解析器生成的 html 内容中的 a 标签都是 target='_self'
;一般情况下在本页面打开新的页面内容很正常没有什么问题,但是当博文中引用了外站资源的时候,很多情况下并不希望读者在阅读过程中在本页面内进行跳转,会打断阅读的连贯性,但是又不能不提供一手资料的原文链接,折中方案是针对外链在新标签页打开,阅读完后让用户关闭外链后能继续之前的阅读,因此有了下面的想法内容:
实施:
思路: 在不改动 solo 源代码的前提下,利用 solo 提供的后台管理界面在 工具-> 偏好设置-> 信息配置中自定义添加脚本内容,具体代码如下,请自行阅读注释内容:
<script type='text/javascript'>
//因为solo中jq的加在顺序在这些自定义配置后面,因此使用原生js的onload方法,保证依赖的jq库能提前载入!
window.onload = function () {
$(function () {
//针对页面的所有a标签进行处理
$('a').each(function(){
/*
因为很多a标签用来做锚链接跳转或者执行js函数或者使用相对路径进行站内跳转,
因此,使用第一个条件保证只选取(可能)进行外部页面跳转的链接,
第二个条件按照自己的域名灵活配置,保证站内跳转不会打开新的页面防止打开页面太多;
ps:或者更灵活的思路是
--本站域名应该是从配置文件里面写到ftl模版的,去翻一下ftl语法中如何在js中使用作用域变量,
请自行了解,我这比较随性,就写死了,没人管的话,改天我看下
*/
if($(this).attr('href')
&& $(this).attr('href').indexOf('http')==0
&& $(this).attr('href').indexOf('blog.washmore')==-1){
//为满足条件的a标签追加新窗口打开链接的属性
$(this).attr("target","_blank");
}
});
});
}
</script>
结语:
在自己的 blog 测试了一下,效果还不错,大伙有兴趣的拿去试试呗
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于