User:Cwek/myTOC.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
//修订自[[User:YFdyh000/head_TOC.js]],还有其他人的用户页(好像有两个人,太久忘了),想仿制百度百科的浮动式目录,不过还挺难看的,凑合着用吧
$().ready(function()
{
window.myTOC=window.myTOC||{};
var mt=window.myTOC;
mt.isToSetToc=false;
mt.isHaveSetToc=mt.isHaveSetToc||false;
if(!mt.isHaveSetToc){
var oldid=mw.config.get("wgRevisionId");
var pagename=mw.config.get("wgTitle");
var fullpagename=mw.config.get("wgPageName");
var spacenameid=mw.config.get("wgNamespaceNumber");
var action=mw.config.get("wgAction");
var rootul=$("<ul>");
var fun_line_parse_body=function(text,ele_span){
return function(){
new mw.Api({async:false,cache:true})
.get({action:"parse","text":text.replace(/\{/g,"%7b").replace(/\}/g,"%7d"),
prop:"text",contentmodel:"wikitext",uselang:"user",
disablelimitreport:1,"wrapoutputclass": "",
//maxage:600,servedby:1,curtimestamp:1
})
.done(function(data2){
ele_span.html(decodeURIComponent($(data2.parse.text["*"]).text()));
});
};
};
var fun_line_parse=function(text,ele_span){
setTimeout(fun_line_parse_body(text,ele_span),1000);
};
if(spacenameid>=0&&action=="view"){
new mw.Api({async:false,})
.get({action:"parse"/*,page:fullpagename*/,oldid:oldid,prop:"sections",/*disablelimitreport:1,*/})
.done(function(data){
var last_ele;
$(data.parse.sections).each(function(_x_,ele){
//console.debug(ele);
var anchor=ele.anchor;
var index=ele.index;
var toclevel=ele.toclevel;
var line=ele.line;
var number=ele.number;
var level=ele.level;
var workul=rootul;
for(var l=1;l<level-1;l++){
var last_li=workul.children("li:last-child");
var t_ul=last_li.children("ul");
if(t_ul.length==1){
workul=t_ul;
}
else{
workul=($("<ul>").appendTo(last_li));
}
}
var ele_toctext=$("<span>").addClass("toctext");
$("<li>").addClass("toclevel-"+toclevel).addClass("tocsection-"+index).append(
$("<a>").attr("href","#"+anchor)
.append($("<span>").addClass("tocnumber").text(number))
.append(ele_toctext)
).appendTo(workul);
fun_line_parse(line,ele_toctext);
last_ele=ele;
});
});
mt.isToSetToc=true;
}
if(action=="view"&&($("div#toc.toc").length==1&&
-1!=fullpagename.indexOf("Special:网络书源")))
{
$("div#toc.toc>ul").children().clone().appendTo(rootul);
mt.isToSetToc=true;
}
var TOC_div_style_size={};
if(!mt.isToSetToc)
{
rootul=$("<span>").attr("style","text-align:center;").text("目录不存在");
}
else
{
TOC_div_style_size={width:"165px",height:"500px"};
}
var TOC_div_style=$.extend({display:"none",overflow:"auto",border:"1px solid #99B3FF","background-color":"white"},TOC_div_style_size);
var my_TOC=$("<div>");
$("body").prepend(my_TOC);
my_TOC
.css({position:"fixed",top:"20px",left:"0px","z-index":"100",border:"1px solid #99B3FF"})
.addClass("noprint")
.attr("id","my_TOC")
.append(
$("<div>")//目录层开关
.attr("id","my_TOC_switch")
.css({"text-align":"center",border:"1px solid #DCDCDC"})
.append(
$("<a>")
.css("font-size","12px")
.text("目录折叠开关")
.click(function(){
$('#my_TOC_totalobj').slideToggle();
})
)
)
.append(
$("<div>")//目录块
.attr("id","my_TOC_totalobj")
.css({display:"none","background-color":"white"})
.append(
$("<div>")//目录块头
.attr("id","my_TOC_block_head")
.css("text-align","center")
.append($("<a>").attr("href","#top").text("回到顶部"))
.append("·")
.append($("<a>").attr("href","#footer").text("直至底部"))
.append($("<br>"))
.append(
$("<a>")
.text("显示/隐藏目录")
.click(function(){
$('#TOC_obj').slideToggle();
})
)
)
.append(
$("<div>")//目录块体
.attr("id","TOC_obj")
.css(TOC_div_style)
.append(
$("<div>")
.addClass("toc")
.css("display","table")
.append(rootul)
)
)
);
}
mt.isHaveSetToc=true;
});