1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
//License: Expat (MIT)
//Chrisoft Xiong 2017
var prev,succ,tocid=0,headerlist=[];
function request(url,func)
{
var h=new XMLHttpRequest();
h.open("GET",url);
h.onload=()=>{func(h.response,h.status)};
h.send();
}
function parsetags(tgs)
{
var r="";
var a=tgs.split(",");
r="#"+a[0];
for(var i=1;i<a.length;++i)r+=" #"+a[i];
return r;
}
function dfs(el,le,p)
{
var e=document.createElement('li');
e.innerHTML='<a class="toctarg" href="#tocanch'+tocid+'">'+el.innerHTML+'</a>';
le.appendChild(e);
el.id='tocanch'+(tocid++);
el.classList.add('tvis');
var che=null,i;
for(i=p+1;i<headerlist.length;)
{
if(headerlist[i].tagName<=el.tagName)break;
if(headerlist[i].classList.contains('notoc'))continue;
if(che===null)
{
var te=document.createElement('li');
che=document.createElement('ul');
che.classList.add('tocnode');
te.appendChild(che);
le.appendChild(te);
}
i=dfs(headerlist[i],che,i);
}
return i;
}
function bpinit()
{
var parr=window.location.pathname.substr(10).split('/');
var pflt="";ppn=0;
if(parr.length>1&&parr[1].length)
{
request("/blog/cgi-bin/get-post-content.cgi?p="+parr[1],
(r,s)=>
{
if(s>=400)window.location="/blog";
var p1=r.search('\n');
var title=r.substr(0,r.search('\n'));
var p2=r.substr(p1+1).search('\n');
var date=r.substr(p1+1,p2);
var p3=r.substr(p1+p2+2).search('\n');
var tags=r.substr(p1+p2+2,p3);
document.getElementById("title").innerHTML=title;
document.getElementById("titleh").innerHTML=title;
document.getElementById("datetags").innerHTML=date+"<br>"+parsetags(tags);
document.getElementById("article").innerHTML=r.substr(p1+p2+p3+3);
var l=document.getElementById("article").querySelectorAll("script");
for(var i of l)
{
var s=document.createElement("script");
s.async=true;
s.src=i.src;
document.getElementById("article").appendChild(s);
}
var tgs=tags.split(',');
for(var i=0;i<tgs.length;++i)
{
var l=document.createElement('li');
l.innerHTML='<a href="/blog/list/'+tgs[i]+'/">'+tgs[i]+"</a>";
document.getElementById('tagslist').appendChild(l);
}
request("/blog/cgi-bin/get-archive-list.cgi?qn="+parr[1],
(r,s)=>
{
if(s>=400)return;
var o=JSON.parse(r);
prev=o.prev;succ=o.succ;
}
);
l=document.getElementById('article').querySelectorAll('h2,h3,h4,h5,h6');
var tocroot=document.getElementById('tocroot');
for(var i of l)
{
if(!i.classList.contains('notoc'))headerlist.push(i);
}
for(var i=0;i<headerlist.length;)i=dfs(headerlist[i],tocroot,i);
if(!tocroot.children.length)document.getElementById('tocouter').style.display='none';
for(var i=0;i<tgs.length;++i)
footnoter();
if(window.location.hash.length&&document.querySelector(window.location.hash))
window.scroll(window.scrollX,document.querySelector(window.location.hash).getBoundingClientRect().top);
}
);
}
}
function prevpost(){if(prev.length)window.location="/blog/post/"+prev;}
function succpost(){if(succ.length)window.location="/blog/post/"+succ;}
|