MarkdownPad2添加目录(输出为HTML时可用)
平时看书的时候懒得上网写在线博客,就在电脑上用了很长时间的MarkDownPad2来记录自己的心得笔记,等那天高兴了再把他们贴出来。界面清爽,是我使用它最重要的原因,但是MarkdownPad2导出的HTML文件不能自动提取目录,手动添加有特别麻烦,这让我大为恼火。于是,经过一天的Google,百度。需要自定义Html模板,添加一段JS代码就可以了。网上找了一段代码,自己又修改了一点,添加了一些功能(点击收起或展开目录)不过前提是,你要激活MarkdownPad2的专业版。这里分享一个授权key
邮箱地址:
Soar360@live.com
授权秘钥:
GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImDHzWdD6xhMNLGVpbP2M5SN6bnxn2kSE8qHqNY5QaaRxmO3YSMHxlv2EYpjdwLcPwfeTG7kUdnhKE0vVy4RidP6Y2wZ0q74f47fzsZo45JE2hfQBFi2O9Jldjp1mW8HUpTtLA2a5/sQytXJUQl/QKO0jUQY4pa5CCx20sV1ClOTZtAGngSOJtIOFXK599sBr5aIEFyH0K7H4BoNMiiDMnxt1rD8Vb/ikJdhGMMQr0R4B+L3nWU97eaVPTRKfWGDE8/eAgKzpGwrQQoDh+nzX1xoVQ8NAuH
授权过后就可以自定义Html模板了;就在
Tools→ Options → Advanced中的Custom Html Head Content中,点击HTML head edit将下面的代码复制到弹出的框内即可
自己的代码
- 由于这段代码没有使用JQuery,很多方法开起来很累赘,但是如果另外引入JQuery文件的话,对于MarkdownPad来说就有点不太方便了,需要把JQuery文件放在需要导出的Html文件的同文件夹下。
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var div1 = document.createElement("div");
div1.style.cssText = "clear:both";
// 生成目录列表
var outline = document.createElement("div");
outline.setAttribute("id", "outline-list");
outline.style.cssText = "border:solid 1px #ccc; background:#eee; min-width:200px;padding:4px 10px;";
var ele_p = document.createElement("p");
ele_p.style.cssText = "text-align: left; margin: 0;";
outline.appendChild(ele_p);
var ele_span = document.createElement("span");
// ele_span.style.cssText = "float: left;";
var ele_text=document.createTextNode("目录");
ele_span.appendChild(ele_text);
var ele_a = document.createElement("a");
ele_a.appendChild(document.createTextNode("[+]"));
ele_a.setAttribute("href", "#");
ele_a.setAttribute("onclick", "javascript:return openct(this);");
ele_a.setAttribute("title", "点击打开目录");
ele_span.appendChild(ele_a);
ele_p.appendChild(ele_span);
var ele_ol = document.createElement("ol");
ele_ol.style.cssText = "display:none;margin-left:14px;padding-left:14px;line-height:160%;";
ele_ol.setAttribute("id", "outline_ol");
outline.appendChild(ele_ol);
var div1 = document.createElement("div");
div1.style.cssText = "clear:both";
document.body.insertBefore(outline, document.body.childNodes[0]);
// 获取所有标题
var headers = document.querySelectorAll('h1,h2,h3,h4,h5,h6');
if (headers.length < 2)
return;
// -----
var old_h = 0, ol_cnt = 0;
// -----
for (var i = 0; i < headers.length; i++) {
var ele_ols = null;
// 找出它是H几,为后面的有序列表做准备
var header = headers[i];
header.setAttribute("id", "t" + i + header.tagName);
var h = parseInt(header.tagName.substr(1), 10);
// -----
if (!old_h){
old_h = h;
}
if (h > old_h) {
ele_ols = document.createElement("ol");
var ele_Current = ele_ol;
if(ele_Current && ol_cnt > 0){
var temp = ol_cnt;
while(temp > 0){
ele_Current = ele_Current.lastChild;
temp--;
}
}
ele_Current.lastChild.appendChild(ele_ols);
ol_cnt++;
} else if (h < old_h && ol_cnt > 0) {
if (h == 1) {
while (ol_cnt > 0) {
ol_cnt--;
}
} else {
ele_ols = document.createElement("ol");
var ele_Current = ele_ol;
if(ele_Current && ol_cnt > 0){
var temp = ol_cnt;
while(temp > 1){
ele_Current = ele_Current.lastChild;
temp--;
}
}
ele_Current.appendChild(ele_ols);
ol_cnt--;
}
}
if (h == 1) {
while (ol_cnt > 0) {
ol_cnt--;
}
}
old_h = h;
// -----
if (ele_ols){
ele_li = document.createElement("li")
ele_ols.appendChild(ele_li);
} else {
ele_li = document.createElement("li")
ele_ol.appendChild(ele_li);
}
var a = document.createElement("a");
// 为目录项设置链接
a.setAttribute("href", "#t" + i + header.tagName);
// 目录项文本
a.innerHTML = header.textContent;
ele_li.appendChild(a);
}
// -----
while (ol_cnt > 0) {
ol_cnt--;
}
// -----
});
// 代开和关闭目录的函数
function openct(e) {
if (e.innerHTML == '[+]') {
// createTextNode
e.setAttribute('title', '收起');
e.innerHTML = '[-]';
var element = document.getElementById("outline_ol");
element.style.cssText = "margin-left:14px;padding-left:14px;line-height:160%;";
} else {
e.setAttribute('title', '展开');
e.innerHTML = '[+]';
var element = document.getElementById("outline_ol");
element.style.cssText = "display:none;margin-left:14px;padding-left:14px;line-height:160%;";
}
e.blur();
return false;
}
</script>
MarkdownPad2添加目录(输出为HTML时可用)的更多相关文章
- Asp.net 4.0,首次请求目录下的文件时响应很慢
原文:Asp.net 4.0,首次请求目录下的文件时响应很慢 1. 问题起因2. 尝试过的处理思路3. 解决方法 1. 问题起因 一个从VS2003(.Net Framework 1.1)升级到.ne ...
- Linux添加目录到环境变量以及添加sublime到环境变量
博主之前有过这种情况,就是在普通用户下su ls等命令还有效,可登陆进root用户之后这些常用的命令竟然失效了. 像这样 这问题其实很简单,但是对于不清楚环境变量的配置的同学来说也的确棘手,我之前就是 ...
- memcached添加日志输出
引子:qa的memcached总是隔一段时间挂掉,导致qa进不去.决定查一下原因,于是添加日志输出,等下次出错便于查阅.定位问题. memcache默认没有日志输出.如果想把memecache服务日志 ...
- spark中的多目录输出及压缩
最近接到一个需求,需要对spark的结果分目录输出,百度之后找到了解决方案,大多都是spark 按照key分目录输出, 但是在文件当中,会把key也输出出来,在这里以key作为目录是想建hive表时把 ...
- Linux添加目录到环境变量以及添加Sublime Text到环境变量
本文主要介绍了Linux添加目录到环境变量以及添加Sublime Text到环境变量,通过具体的解释说明,让我们从中学到Linux添加目录到环境变量以及添加Sublime Text到环境变量的精髓所在 ...
- Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- vs212创建mvc3项目,添加ADO.NET实体数据模型时产生 XXXX.Desiger.cs 文件为空
vs212创建mvc3项目,发现添加ADO.NET实体数据模型时,产生StoreDB.Desiger.cs文件为空 产生StoreDB.Desiger.cs文件为空 原因是,在vs2012中,添加AD ...
- H面试程序(1)编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的 下一秒
编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒. 如输入 2004 年 12 月 31 日 23 时 59 分 59 秒,则输出 2005年 1 月 1 日 0 时 0 分 0 秒. ...
- php遍历目录输出目录及其下的所有图片文件
在做网站的时候,需要给文章内所有的图片添加上logo,如何利用ThinkPHP来实现. ThinkPHP为我们很好的提供了图像处理类,给文章中的所有图片加上水印的思路,上传的图片文件都保存在一个文件夹 ...
随机推荐
- CSS之拖拽1
PageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化. clientX:鼠标在页面上可视区域的位置,从浏览器可视区域左上角开始,即是以浏览器滑动条此刻的滑动 到的 ...
- jQuery中的选择器<思维导图>
选择器是jQuery的重要组成部分,在jQuery中,对事件处理.遍历DOM和Ajax操作都依赖于选择器.如果能熟练地使用选择器,不仅能简化代码,而且可以达到事半功倍的效果. 下面是关于jQuery中 ...
- 如何用C#代码查找某个路径下是否包含某个文件
string path = "f:\\哈哈"; if (Directory.Exists(path)) { MessageBox.Show("存在文件夹") ...
- 解决PHP中file_get_contents抓取网页中文乱码问题
根据网上有朋友介绍说原因可能是服务器开了GZIP压缩. 下面是用firebug查看我的博客的头信息,Gzip是开了的. 请求头信息原始头信息 代码如下 复制代码 Accept text/html,ap ...
- ASP.NET 窗体间传值实现方法详解
假设ParentForm.aspx 页面上有TextBox1文本框和Open按钮点击Open按钮弹出SubForm.aspx,SubForm.aspx页面上有TextBox1文本框和Close按钮点击 ...
- Cocos2d-JS事件处理机制
在很多图形用户技术中,事件处理机制一般都有三个重要的角色:事件.事件源和事件处理者.事件源是事件发生的场所,通常就是各个视图或控件,事件处理者是接收事件并对其进行处理的一段程序.事件处理机制中三个角色 ...
- Window下配置NodeJs环境详解
今年打算学习Web这块,所以就买了本Node.js+MongoDb+AngularJS这本书,这周天也比较忙,想着录视频(拍小片,不是AV,不要误会,是在线课程)的事情,这周又将Asp.Net ...
- 嵌入式系统图形库GUI核心模块介绍
本文转载自:http://blog.csdn.net/xteda/article/details/6575278 (作者 冯青华 信庭嵌入式工作室(www.xteda.com)- CEO Blog:h ...
- Linux驱动编程--基于I2C子系统的I2C驱动的Makefile
ifeq ($(KERNELRELEASE),) KERNELDIR ?= /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd) TEST = ...
- NaN属性,isNaN函数
NaN:Not a Number,顾名思义,表示不是一个数字. 可以把 Number 对象设置为该值,来指示其不是数字值. 使用 isNaN() 全局函数来判断一个值是否是 NaN 值 详见 Java ...