Solo  当前访客:1 登录 注册

hack小技巧解决solo的md解析器[]()语法不支持新窗口(标签)打开页面功能 有更新!

前言:

众所周知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测试了一下,效果还不错,大伙有兴趣的拿去试试呗

17-07-15 11:01 washmore
标签: , , , , ,
washmore
17-07-15 11:00 回复»

updates:
增加了一个判断,$(this).attr(‘href’) 防止 未定义;

washmore
17-07-14 09:54 回复»

好 ,如果遇到有问题在这里留言;没问题的话 也在这里来说一声,我看看

LeoTsao
17-07-14 09:52 回复»

我来试试

washmore
17-07-07 11:43 回复»

:eyes:

washmore
17-07-06 17:37 回复»

木有谁来试试咩?

washmore
17-07-06 17:37 回复»

:joy: :joy: :joy:

validate
TOP