幕布-序号&统计

显示节点【对应层级】序号、统计子节点数量【忽略无子节点的节点】、BUG【偶尔不知原因的样式错乱】

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==

// @name         幕布-序号&统计
// @namespace    。。。
// @version      0.3
// @description  显示节点【对应层级】序号、统计子节点数量【忽略无子节点的节点】、BUG【偶尔不知原因的样式错乱】
// @include      https://mubu.com/doc*
// @author       Arno Lee
// @grant        none

// ==/UserScript==
(function() {
    let nodeIndexMap = new Map(),nodeContenMap = new Map(),nodeChildsMap = new Map();
    function process(step,depth,nodeChilds)
    {
        if(step < depth)
        {
             ++ step;
        }
        let count=0;
        for (var i = 0; i< nodeChilds.length; i++)
        {
            let node = nodeChilds[i];
            if(node.className == "node" || node.className == "node collapsed" || node.className == "node finished collapsed")
            {
               nodeIndexMap.set(node.id,++count);
               nodeContenMap.set(node.id,node.firstChild.lastChild.innerHTML);
               if(node.lastChild.className=="children")
               {
                   nodeChildsMap.set(node.id,node.lastChild.childNodes.length);
               }
            }
            // 排除样式节点
            if(node.className=="content-wrapper")
            {
               continue;
            }
            process(step,depth,node.childNodes);
        }
        -- step;
    }
    window.setTimeout(function() {
        process(1,4,document.getElementsByClassName("node-tree")[0].childNodes);
        nodeIndexMap.forEach(function (value,key) {
            if(nodeContenMap.get(key)!="")
            {
                let ele = document.getElementById(key);
                if(nodeChildsMap.get(key))
                {
                    ele.firstChild.lastChild.innerHTML = '<span style=color:#007aff>('+nodeIndexMap.get(key)+') </span>' + nodeContenMap.get(key)+' <span style=color:#007aff>【'+nodeChildsMap.get(key)+'】</span>';
                }
                else
                {
                    ele.firstChild.lastChild.innerHTML = '<span style=color:#007aff>('+nodeIndexMap.get(key)+') </span>' + nodeContenMap.get(key);
                }
            }
        });
    }, 3000);
})();