博客园自动循环创建索引目录JS
对于比较长的文章,有一个好的目录索引是很有必要的,可以让读者比较清楚地了解文章内容和层次。然而,目前(2015.7)博客园不像csdn博客那样,会对发布的文章自动生成目录索引。不过,一些网友通过博客园后台提供的一些自定义功能,自己写脚本实现了这一功能。我用的脚本主要就是参考赵子清的,文章地址是:http://www.cnblogs.com/zzqcn/p/4657124.html。
原作者的脚本只支持1级目录,我改了两级:第1级是h2,第2级是h3。还添加了一些小玩意,比如讨论qq群号。效果如下图所示:
添加功能的具体步骤是:
- 确保自己的博客园后台支持js
这个默认是不支持,需要向官方发个邮件申请开通(邮箱是contact@cnblogs.com),我简单写了封邮件,1小时就回复了,邮件内容我只写了两个字:如题。。。。 - 到后台加入脚本
打开博客园后台,进入“设置”标签页,在最下面的“页脚Html代码”对应的编辑框粘贴你的js代码,然后点“保存”按钮保存。 - 按格式写文章
在写新博文的时候,注意按照你js脚本里设定的格式来划分章节,比如h2,h3等。当然,以前发布的文章如果有h2,h3之类,也会自动生成目录索引。
1 <script language="javascript" type="text/javascript"> 2 //循环创建索引 3 function getHxList(jquery_h_list, level, offset) 4 { 5 var content = ""; 6 level += 1; 7 if(jquery_h_list.length>0 && level <= 4) 8 { 9 //content="alan"; 10 content += '<a name="_labelTop"></a>'; 11 content += '<div id="navCategory">'; 12 content += '<ul>'; 13 for(var i=0; i<jquery_h_list.length; i++) 14 { 15 var go_to_top = '<div style="text-align: right"><a href="#_labelTop">回到顶部</a><a name="_label' + offset + i + '"></a></div>'; 16 $(jquery_h_list[i]).before(go_to_top); 17 var li_content = '<li><a href="#_label' + offset + i + '">' + $(jquery_h_list[i]).text() + '</a></li>'; 18 content += li_content; 19 20 var jquery_h2_list = $(jquery_h_list[i]).nextUntil(jquery_h_list[i+1], "h"+level); 21 content += getHxList(jquery_h2_list, level, offset+i); 22 } 23 content += '</ul>'; 24 content += '</div>'; 25 } 26 return content; 27 } 28 29 //生成目录索引列表 30 function GenerateContentList() 31 { 32 var jquery_h2_list = $('#cnblogs_post_body h2');//如果你的章节标题不是h2,只需要将这里的h2换掉即可 33 var content = '<p style="font-size:18px"><b>阅读目录</b></p>'; 34 content += getHxList(jquery_h2_list, 2, 0); 35 if($('#cnblogs_post_body').length != 0 ) 36 { 37 $($('#cnblogs_post_body')[0]).prepend(content); 38 } 39 return; 40 } 41 GenerateContentList(); 42 </script>