在MarkdownPad2中生成目录,方便使用。点击工具-选项-高级-HTML Head编辑器。输入下面的代码。
注:在HTML模式使用。快捷键F6
<script type = "text/javascript" >
//create content
document.addEventListener("DOMContentLoaded", function()
{
toTop();//置顶
var div1 = document.createElement("div");
div1.style.cssText = "clear:both";
// create TOC list
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", "Click to Open 目录");
ele_span.appendChild(ele_a);
ele_p.appendChild(ele_span);
var ul_top = document.createElement("ul"); // 顶级
ul_top.style.cssText = "display:none;margin-left:14px;padding-left:14px;line-height:160%;";
ul_top.setAttribute("id", "outline_ol");
outline.appendChild(ul_top);
var div1 = document.createElement("div");
div1.style.cssText = "clear:both";
document.body.insertBefore(outline, document.body.childNodes[0]);
// get all the headlines
var headers = document.querySelectorAll('h1,h2,h3,h4,h5,h6');
if (headers.length < 2)
return;
var old_h = 1;
var ul_array = new Array(7);
var ul_current = null;
ul_array[1] = ul_top;
for (var i = 0; i < headers.length; i++)
{
// get H* and prepare for the ordered list
var header = headers[i];
//header.setAttribute("id", "t" + i + header.tagName);
header.setAttribute("id", header.textContent);
var h = parseInt(header.tagName.substr(1), 10);
// assert 1<=h && h <= 6
ul_current = 0;
if (h < old_h)
{
for (var j = h+1; j <= 6; j++)
{
ul_array[j] = null;
}
ul_current = h;
}
else if (h == old_h)
{
ul_current = h;
}
else if (h > old_h)
{
ul_current = old_h + 1; /* 是old_h + 1的原因: h如果是old_h + 2 或者 + 3时,
我们依然按 + 1来做 */
}
if (ul_array[ul_current] == null)
{
ul_array[ul_current] = document.createElement("ul");
if (h>1)
{
ul_array[h-1].lastChild.appendChild(ul_array[ul_current]);
}
}
var elem_li = document.createElement("li");
ul_array[ul_current].appendChild(elem_li);
var a = document.createElement("a");
// set href for the TOC item
//a.setAttribute("href", "#t" + i + header.tagName);
a.setAttribute("href", "#" + header.textContent);
// TOC item text
//a.innerHTML = "h" + h + header.textContent;
a.innerHTML = header.textContent;
elem_li.appendChild(a);
old_h = h;
}
});
function toTop(){
var toTop = document.createElement("div");
toTop.style.cssText = "position:fixed;bottom:10px;right:10px;width:20x;height:20px;background:gray;padding:5px;";
toTop.innerHTML="^"
toTop.setAttribute("id", "toTop");
toTop.setAttribute("title", "to top");
document.body.insertBefore(toTop, document.body.childNodes[0]);
// 获取置顶对象
var obj = document.getElementById('toTop');
// 置顶对象点击事件
obj.onclick = function() {
var timer = setInterval(function() {
window.scrollBy(0, -500);
if(document.documentElement && document.documentElement.scrollTop) //IE
{
if(document.documentElement.scrollTop<=0){
clearInterval(timer);
}else{
window.scrollBy(0,-500);
}
}else{ //Chrome不支持documentElement.scrollTop
if(document.body.scrollTop<=0){
clearInterval(timer);
}else{
window.scrollBy(0,-500);
}
if (document.body.scrollTop == 0) {
clearInterval(timer);
};
}
}, 2);
}
// 窗口滚动检测
//window.onscroll = function() {
// obj.style.display = (document.body.scrollTop >= 300) ? "block" : "none";
//}
}
//
function openct(e)
{
if (e.innerHTML == '[+]')
{
// createTextNode
e.setAttribute('title', 'collapse');
e.innerHTML = '[-]';
var element = document.getElementById("outline_ol");
element.style.cssText = "margin-left:14px;padding-left:14px;line-height:160%;";
}
else
{
e.setAttribute('title', 'expand');
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>