// ==UserScript==
// @name 思否目录
// @namespace http://zszen.github.io
// @version 1.0
// @description 思否文章目录列表
// @author You
// @match https://segmentfault.com/a/*
// @grant none
// @downloadURL https://update.greasyfork.icu/scripts/407767/%E6%80%9D%E5%90%A6%E7%9B%AE%E5%BD%95.user.js
// @updateURL https://update.greasyfork.icu/scripts/407767/%E6%80%9D%E5%90%A6%E7%9B%AE%E5%BD%95.meta.js
// ==/UserScript==
(function() {
'use strict';
let label = 'zszen ';
let isDebug = 1;
let color_major = "#2B4D7C";
let pool = [];
let dic_title = {};
var area = ELs('h1', el=>el.className.indexOf("article_title"),null)[0].parentNode;
var titles = ELs('*',null,null,area)
for(var i in titles){
var tagName = titles[i].tagName;
for(var k=1;k<=6;k++){
if(tagName=='H'+k){
pool.push([k,titles[i].textContent.replace(/(\n| )/g,''), titles[i]])
}
}
}
var div = TagM('div',null,null, 'border-radius:5px;font-size:13;line-height:17px;overflow:hidden; position:fixed; right:40px; top:9%; z-index:9999;height: auto; width: 250px;border:3px solid '+color_major+';background-color:#ffffff;opacity:.5">');
div.id = 'zszen_jianshu';
div.className = '简书列表';
for(var j in pool){
var t = TagM('h4',div,''+pool[j][1]+'','text-align:left;width:500%;line-height:13px;margin-bottom:2px;margin-top:2px;line-height:1;padding-left:2px;padding-top:0px;-webkit-margin-before:.3em;-webkit-margin-after:.3em;-webkit-margin-start: 0px;-webkit-margin-end: 0px;font-weight: bold;');
t.idx = j;
t.addEventListener('click', (evt)=>{
var id = evt.target.idx ? evt.target.idx:evt.target.parentNode.idx;
let target = pool[id][2];
document.documentElement.scrollTop=target.offsetTop
document.body.scrollTop=target.offsetTop
});
}
//console.log(pool)
//搜索
function ELs(tagName, conditionFun, dealFun, parent){
if(parent==null) parent = document;
var tags = [...parent.getElementsByTagName(tagName)];
if(conditionFun){
tags = tags.filter(conditionFun);
}
if(dealFun){
tags.forEach(dealFun);
}
return tags;
}
//DivMaker('asdfasdf ', 'height:100px', 'a.aaa { color: green; }')
function TagM(tag, parentNode, innerHtml, styleString, cssString){
var divNode = document.createElement(tag);
if(innerHtml!=null) divNode.innerHTML = innerHtml;
if(parentNode==null){
document.body.appendChild(divNode);
}else{
parentNode.appendChild(divNode);
}
if(styleString){
divNode.style = styleString;
}
if(cssString){
var style = document.createElement('style');
style.appendChild(document.createTextNode(cssString));
divNode.appendChild(style);
}
return divNode;
}
})();