鸟坛辅助脚本

折叠、展开、存储等功能

目前为 2017-08-30 提交的版本。查看 最新版本

// ==UserScript==
// @name         鸟坛辅助脚本
// @namespace    http://tampermonkey.net/combatsimbbs/
// @version      0.1
// @description  折叠、展开、存储等功能
// @author       YY
// @match        http://combatsim.bbs.net/bbs/01/index.html*
// @grant        GM_getValue
// @grant        GM_setValue
// ==/UserScript==

(function() {
    'use strict';
    addLink();
    topics_handle();
    
    function addLink(){
        var unfold = document.createElement('a');
        unfold.innerHTML = '全部展开';
        unfold.href = 'javascript:void(0)';
        unfold.addEventListener('click',function(){
            unfold_all();
        });
        var fold = document.createElement('a');
        fold.innerHTML = '全部折叠';
        fold.href = 'javascript:void(0)';
        fold.addEventListener('click',function(){
            fold_all();
        });
        var f = document.querySelector('form[name="login"]');
        f.appendChild(unfold);
        f.insertAdjacentHTML('beforeend','|');
        f.appendChild(fold);
    }
    
    function unfold_all(){
        // 全部展开所有主题        
        var top_ul = document.querySelector('body>ul');
        var num = top_ul.children.length;
        for(var i = 0;i<num;i++){
            var node = top_ul.children[i];
            if(node.nodeName === 'DIV'){
                if(!node.id)
                    continue;
                if(node.id.indexOf('fake')<0){
                    node.style = "";
                }
                else{
                    node.style = "display:none";
                }
                GM_setValue(node.id,true);
            }
        }
    }
    function fold_all(){
        // 全部折叠所有主题
        var top_ul = document.querySelector('body>ul');
        var num = top_ul.children.length;
        for(var i = 0;i<num;i++){
            var node = top_ul.children[i];
            if(node.nodeName === 'DIV'){
                if(!node.id)
                    continue;
                if(node.id.indexOf('fake')<0){
                    node.style = "display:none";
                }
                else{
                    node.style = "";
                }
                GM_setValue(node.id,false);
            }
        }
    }
    unsafeWindow.fold = function (id){
        var fake_div = document.querySelector('[id="' + id + '_fake"]');
        var real_div = document.querySelector('[id="' + id + '"]');
        real_div.style = "display:none";
        fake_div.style = "";
        GM_setValue(id,false);
        
    };
    unsafeWindow.unfold = function (id){
        var fake_div = document.querySelector('[id="' + id + '_fake"]');
        var real_div = document.querySelector('[id="' + id + '"]');
        real_div.style = "";
        fake_div.style = "display:none";
        GM_setValue(id,true);
    };
    function topics_handle(){
        // 将每个主题包裹在一个div中
        var top_ul = document.querySelector('body>ul');
        var ul_content = top_ul.innerHTML;
        ul_content = '<div>' + ul_content + '</div>';
        ul_content = ul_content.replace(/<hr align="LEFT" size="0" noshade="" width="80%">/g,'</div><hr align="LEFT" size="0" noshade="" width="80%"><div>');
        // top_ul_fake不添加进页面,全部处理完毕后再替换为原页面内容
        var top_ul_fake = document.createElement('ul');
        top_ul_fake.innerHTML = ul_content;
        var num = top_ul_fake.children.length;
        for(var i = num-1;i>=0;i--){
            var node = top_ul_fake.children[i];
            if(node.nodeName === 'DIV'){      // topic 的div标签,包含所有内容
                var title = node.children[0];    // li 元素
                var topic_url = title.querySelector('a').href;
                if(node.children.length > 1){
                    // 如果帖子只有标题没有内容,且没有回复的话,就不处理。 否则就添加一个额外的标题div
                    var topic_id = topic_url.substring(topic_url.lastIndexOf('/')+1,topic_url.indexOf('.html'));  // 截取到这个topic的id
                    node.id = topic_id;
                    var fold_btn = document.createElement('a');    // 添加折叠按钮
                    fold_btn.href = 'javascript:window.fold(' + topic_id + ')';
                    fold_btn.innerHTML = '<b style="font-size:16px">&nbsp;-&nbsp;</b>';
                    
                    var unfold_btn = document.createElement('a');    // 添加展开按钮
                    unfold_btn.href = 'javascript:window.unfold(' + topic_id + ')';
                    unfold_btn.innerHTML = '<b style="font-size:16px">&nbsp;+&nbsp;</b>';
                    var newTitle = document.createElement('div');
                    newTitle.id = topic_id + '_fake';
                    newTitle.innerHTML = '<li>' + title.innerHTML + '</li>';
                    newTitle.children[0].appendChild(unfold_btn);
                    title.appendChild(fold_btn);
                    top_ul_fake.insertBefore(newTitle,node);   // 在topic div标签前加一个title div
                    
                    // 获取浏览器存储数据,判断是否需要显示
                    var isShow = GM_getValue(topic_id) === false?false:true;
                    if(isShow){
                        node.style = "";
                        newTitle.style = "display:none";
                    }
                    else{
                        newTitle.style = "";
                        node.style = "display:none";
                    }
                }
            }
                
        }
        
        
        // 全部处理完毕后再替换为原页面内容
        top_ul.innerHTML = top_ul_fake.innerHTML;

    }

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址