贴吧页面精简

【可能是你遇到的最好用的贴吧精简脚本】,完全去除扰眼模块、广告模块、各类伪装广告,全面支持各种贴吧页面,免登录看帖

As of 2016-11-26. See the latest version.

// ==UserScript==
// @name         贴吧页面精简
// @namespace    https://greasyfork.org/zh-CN/scripts/23687
// @namespace    https://coding.net/u/BackRunner/p/GreaseMonkey-JS/git
// @contributionURL https://sinacloud.net/backrunner/img/alipay.jpg
// @version      2.4.5
// @description  【可能是你遇到的最好用的贴吧精简脚本】,完全去除扰眼模块、广告模块、各类伪装广告,全面支持各种贴吧页面,免登录看帖
// @author       BackRunner
// @include      *://tieba.baidu.com/*
// @exclude      *://tieba.baidu.com/f/fdir*
// @run-at       document-body
// @require      https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js
// @license      MIT
// @grant        unsafeWindow
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_listValues
// @grant        GM_info
// ==/UserScript==

// ====  Tips =====
// 使用TamperMonkey的用户可以将脚本的加载位置设置为document-start获得更好效果,若出现不生效等错误请还原设置
// 请根据您的需要根据下面代码的注释选择需要隐藏的模块,有不想隐藏的模块可以注释掉那一行代码
// 请根据您的需要与注释调整变量定义内的内容
// 遇到问题请立即反馈
// ==== Donate ====
// 如果您觉得本脚本好用可以赞助我一点零花
// donate@backrunner.top (支付宝)
// === 更新日志 ===
// 2016.11.26 - 2.4.5
// 错误修正
// 优化代码
// 头图禁用功能修改
// 设置面板调整
// 排除目录页
// 2016.11.20 - 2.4.4
// 改善了设置面板的触发事件
// 修改匹配设置
// 添加对个人主页的支持
// 添加一些设置
// ================


(function() {
    //=========================
    //        变量定义
    //=========================
    var sleepTime;
    var sleepTimeWhenPageTurn;
    var postprocess;
    var homePageProcess;
    var groupPageProcess;
    var noLoginProcess;
    var homeProcess;
    var isHeadimg;
    var checkrate;
    var delayScriptRunTimes;
    //底部信息div
    var foot;
    //=====================
    //以上内容可以修改,请勿修改以下内容
    //=====================
    var startTime = new Date().getTime();
    var finishTime = -1;
    //=========================
    //        主执行区
    //=========================
    //控制台信息
    console.warn('贴吧页面精简 by BackRunner: 初始化'); 
    //初始化
    initialize();    
    console.warn('贴吧页面精简 by BackRunner: 启动');    
    //css修改
    appendCSS();
    //更新信息
    updateAlert();
    if (postprocess){      
        //惰性脚本执行
        $(document).ready(function(){
            //加载计时
            finishTime = new Date().getTime() - startTime;
            console.log('贴吧页面精简 by BackRunner: 页面加载用时: ' + finishTime);
            console.warn('贴吧页面精简 by BackRunner: 开始执行惰性脚本');   
            try{
                //控制面板
                console.warn('贴吧页面精简 by BackRunner: 正在创建控制面板');
                createControlPanel();
            } catch(e){
                console.error(e);
            }
            try{
                //底部信息
                createFooterLayer();
                addFinishTimeToFooter();
            } catch(e){
                console.error(e);
            }
            //列表翻页监听
            if (window.location.href.indexOf("tieba.baidu.com/f") !== -1){
                addListenerToList();
                adinListClean();
                disableForumCard();
            } else {
                if (window.location.href.indexOf("tieba.baidu.com/p/") !== -1){
                    addListenerToPage();
                    tpointADClean();        
                    adinPageClean();
                    //执行免登录模块
                    if (noLoginProcess){
                        addNoLoginLZEventListener();
                        noLogin();                      
                    }
                } else {
                    if (window.location.href.indexOf("tieba.baidu.com/group") != -1){
                        console.warn('贴吧页面精简 by BackRunner: 当前位于群组页面,不执行群组页面惰性脚本');
                    } else {
                        if (window.location.href == "http://tieba.baidu.com/"){
                            console.warn('贴吧页面精简 by BackRunner: 当前位于主页,不执行主页相关惰性脚本');
                        } else {
                            console.warn('贴吧页面精简 by BackRunner: 页面未适配延迟脚本');
                        }
                    }
                }
            }             
        });
        //延迟执行
        setTimeout(function(){
            var interval = setInterval(check,100);
            var n=0;
            function check(){
                var times = n+1;
                console.warn('贴吧页面精简 by BackRunner: 延迟脚本正在执行第 ' + times + ' 次');
                try{
                    //控制面板
                    console.warn('贴吧页面精简 by BackRunner: 正在创建控制面板');
                    createControlPanel();

                } catch(e){
                    console.error(e);
                }
                try{
                    //底部信息
                    createFooterLayer();
                } catch(e){
                    console.error(e);
                }
                //列表翻页监听
                if (window.location.href.indexOf("tieba.baidu.com/f") !== -1){
                    addListenerToList();
                    adinListClean();
                    disableForumCard();
                    reStart();
                } else {
                    if (window.location.href.indexOf("tieba.baidu.com/p/") !== -1){
                        addListenerToPage();                        
                        tpointADClean();        
                        adinPageClean();
                        if (noLoginProcess){
                            addNoLoginLZEventListener();
                            noLogin();
                        }
                        reStart();
                    } else {
                        reStart();
                    }
                }
                function reStart(){
                    n++;
                    if (n>delayScriptRunTimes-1){
                        clearInterval(interval);
                    }
                }
            }
        },sleepTime);
    } else {
        setTimeout(function(){
            var interval = setInterval(check,100);
            var n = 0;
            function check(){
                try{
                    //控制面板
                    console.warn('贴吧页面精简 by BackRunner: 正在创建控制面板');
                    createControlPanel();                    
                } catch(e){
                    console.error(e);
                }
                try{
                    //底部信息
                    createFooterLayer();
                } catch(e){
                    console.error(e);
                }
                n++;
                if (n>delayScriptRunTimes -1){
                    clearInterval(interval);
                }
            }
        });

        $(document).ready(function(){
            //加载计时
            finishTime = new Date().getTime() - startTime;
            console.log('贴吧页面精简 by BackRunner: 页面加载用时: ' + finishTime);
            try{
                //控制面板
                console.warn('贴吧页面精简 by BackRunner: 正在创建控制面板');
                createControlPanel();
            } catch(e){
                console.error(e);
            }
            try{
                //底部信息
                createFooterLayer();
                addFinishTimeToFooter();
            } catch(e){
                console.error(e);
            }
        });        
        console.warn('贴吧页面精简 by BackRunner: 后处理脚本已跳过');
    }
    //=========================

    //=========================
    //功能区 请勿修改下面的内容
    //=========================
    //初始化
    function initialize(){
        sleepTime = initialize_var("sleepTime",300);
        sleepTimeWhenPageTurn = initialize_var("sleepTimeWhenPageTrun",50);
        postprocess = initialize_var("postprocess",true);
        homePageProcess = initialize_var("homePageProcess",true);
        groupPageProcess = initialize_var("groupPageProcess",true);
        noLoginProcess = initialize_var("noLoginProcess",true);
        homeProcess = initialize_var("homeProcess",true);
        isHeadimg = initialize_var("isHeadimg",false);
        checkrate = initialize_var("checkrate",1);
        delayScriptRunTimes = initialize_var("delayScriptRunTimes",6);
    }
    function initialize_var(name,defaultSet){
        var obj = GM_getValue(name,defaultSet);
        if (obj === undefined){
            obj = defaultSet;
        }
        return obj;
    }
    //css修改
    function appendCSS(){
        var cssText = "";
        //顶部直播栏
        cssText += '#video_frs_head {display: none !important;}';
        //右侧会员模块
        cssText += '.celebrity {display: none !important;}';
        //右侧我的应用模块
        cssText += '.my_app {display: none !important;}'; 
        //热议榜
        cssText += '.topic_list_box {display: none !important;}'; 
        //广告灰色label
        cssText += '.label_text {display: none !important;}'; 
        //右边一排图标
        cssText += '.j_icon_slot {display: none !important;}'; 
        //会员图标(会造成用户名左移,一定程度上影响整体美观)
        //cssText += '.icon_tbworld {display: none !important;}'; 
        //您可能感兴趣的吧
        cssText += '.forum_recommend {display: none !important;}'; 
        //右上角应用中心
        cssText += '.u_menu_wrap.u_appcenterEntrance_wrap {display: none !important;}'; 
        //右上角会员官网
        cssText += '.u_joinvip_wrap.vip_red.j_btn_getmember {display: none !important;}'; 
        cssText += '.u_joinvip {display: none !important;}';
        //内页顶部banner
        cssText += '.l_banner {display: none !important;}'; 
        //内页成就section
        cssText += '.achievement_medal_section {display: none !important;}'; 
        //顶部游戏信息
        cssText += '.game-head-game-info-wrapper {display: none !important;}'; 
        //内页送礼物按钮
        cssText += '.post-foot-send-gift-btn {display: none !important;}';
        //会员挽尊按钮
        cssText += '.save_face_bg {display: none !important;}';
        cssText += '.save_face_bg_2 {display: none !important;}';
        //底部游戏开测
        cssText += '#duoku_servers_list {display: none !important;}';
        //右侧热门卡包
        cssText += '.u9_aside {display: none !important;}';
        //右侧小说人气榜
        cssText += '.novel-ranking-frs-body {display: none !important;}';
        //头像下面的一排图标
        cssText += '.icon_wrap {display: none !important;}';
        //贴吧触点推广图片(在延迟处理前预处理)
        cssText += '.tpoint-imgs {display: none !important;}';
        //右下角炮筒
        cssText += '.j-firework-sender {display: none !important;}';
        //访谈直播
        cssText += '.interview {display: none !important;}';
        //贴内相关推荐
        cssText += '.thread_recommend {display: none !important;}';
        //贴内广告
        cssText += '.iframe_wrapper {display: none !important;}';
        //右侧贴吧作者认证
        cssText += '.author-manager {display: none !important;}';
        //输入框placeholder
        cssText += '.tb_poster_placeholder {display: none !important;}';    
        //图片签名档
        cssText += '.j_user_sign {display: none !important;}';    
        //会员名牌
        cssText += '.pb_nameplate {display: none !important;}';
        //右侧菜单栏精简
        cssText += '.tbui_fbar_props {display: none !important;}';
        cssText += '.tbui_fbar_tsukkomi {display: none !important;}';
        //吧主专版
        cssText += '.tbui_fbar_bazhu {display: none !important;}';
        //右侧可点击广告
        if (window.location.href != "http://tieba.baidu.com/" && window.location.href != "http://tieba.baidu.com/#" && window.location.href != "http://tieba.baidu.com/##" && window.location.href != "http://tieba.baidu.com/###"){
            cssText += '.j_click_stats {display: none !important;}'; 
        }
        //右侧视频推荐
        cssText += '#video_aside {display: none !important;}';
        //一楼电影广告
        cssText += '.tpoint-skin {display: none !important;}';
        //直播页面底部弹出栏
        cssText += '.attention_tip_wrap {display: none !important;}';
        //底部注册/登录横条
        cssText += '.guidance_fc {display: none !important;}';        
        //content-ad span
        cssText += '.content-ad {display: none !important;}';              
        //head ad span
        cssText += '.head_ad_tag {display: none !important}';

        //群组页面右侧下载
        if (groupPageProcess){
            if (window.location.href.indexOf("tieba.baidu.com/group") != -1){
                cssText += '.right {display: none !important;}';
            }
        }

        //主页模块精简
        if (homePageProcess){
            if (window.location.href === "http://tieba.baidu.com/" || window.location.href === "http://tieba.baidu.com/#" || window.location.href === "http://tieba.baidu.com/##" || window.location.href === "http://tieba.baidu.com/###"){
                //顶部
                try{
                    if (unsafeWindow.PageData.user.is_login === 1){
                        cssText += '.top-sec {display: none !important;}';  
                    }
                } catch (e){
                    console.error('贴吧页面精简 by BackRunner: 登录状态检查错误');
                    console.error(e);
                }                
                //直播秀
                cssText += '.spage_liveshow_slide {display: none !important;}';
                //以下模块因为在右侧有一个下滑页面时让模块仍然保持在可视区域内的设计,单独精简一个会造成滚动页面时模块错位,所以全部精简
                //乱七八糟的滚动活动模块
                cssText += '#plat_act_wrapper {display: none !important;}';
                //豪友俱乐部
                cssText += '.member_rank {display: none !important;}';
                //媒体进驻
                cssText += '#adide_platform {display: none !important;}';
                //贴吧娱乐
                cssText += '#media_item {display: none !important;}';
                //我的游戏
                cssText += '#spage_game_tab_wrapper {display: none !important;}';
                //公告板
                cssText += '#notice_item {display: none !important;}';            
            }
        }

        //个人主页精简
        if (homeProcess){
            if (window.location.href.indexOf("tieba.baidu.com/home") !== -1){
                //右侧礼物面板
                cssText += ".ihome-aside-gift-center {display: none !important}";
                //求婚按钮
                cssText += ".userinfo-marry {display: none !important}";  
                //我的夺宝
                cssText += ".ihome-aside-grab-treasure {display: none !important}";
                //我的T豆、蓝钻
                cssText += ".userinfo_scores {display: none !important}";       
            }
        }

        //列表页头图精简
        if (isHeadimg){
            if (window.location.href.indexOf("tieba.baidu.com/f") !== -1){
                cssText += ".head_banner_img {display: none !important}";
                cssText += ".head_ad_pop {display: none !important}";                 
            }
        }        

        //设置面板css
        cssText += '#backrunnerJSSetting_root {right:0 !important;} #backrunnerJSSetting_con {right:0 !important;width:200px important;}';
        cssText += '#backrunnerJSSetting_con a {display:block !important;white-space:nowrap; !important}';
        cssText += '#backrunnerJSSetting_con li {line-height:23px !important;display:block !important;white-space:nowrap !important;}';
        cssText += '#backrunnerJSSetting_con li a {padding-top:0px !important;padding-bottom:0px !important;padding-right:1em !important;padding-left:1em !important;margin:0 !important;line-height:2.4em !important;}';
              
        console.log('贴吧页面精简 by BackRunner: css创建完成');

        if (navigator.userAgent.indexOf('Chrome') > -1){
            var element = document.createElement('link');
            element.rel="stylesheet";
            element.type="text/css";
            element.href='data:text/css,'+cssText;     
            document.documentElement.appendChild(element);
        } else {
            if (navigator.userAgent.indexOf('Firefox') > -1){
                var modStyle = document.querySelector('#modCSS');
                if (modStyle === null){
                    modStyle = document.createElement('style');
                    modStyle.id = 'modCSS';
                    document.body.appendChild(modStyle);
                    modStyle.innerHTML = cssText; 
                }
            }
            console.log('贴吧页面精简 by BackRunner: css已添加');
        }
    }
    //列表翻页监听
    function addListenerToList(){
        $('#frs_list_pager a').each(function(){
            this.addEventListener('click',listPageTurnEvent);
        });
        console.log('贴吧页面精简 by BackRunner: 列表翻页监听添加完毕');
    }
    //列表翻页监听事件
    function listPageTurnEvent(){
        console.warn('贴吧页面精简 by BackRunner: 列表翻页事件触发');
        setTimeout(function(){
            var interval = setInterval(check,150 * checkrate);
            function check(){
                addListenerToList();
                adinListClean();
            }
            setTimeout(function(){
                addListenerToList();
                adinListClean();
            },sleepTime);
            setTimeout(function(){
                addListenerToList();
                adinListClean();
                clearInterval(interval);
            },finishTime/3);
        },sleepTimeWhenPageTurn);
    }
    function addListenerToPage(){        
        $('.l_pager a').each(function(){
            this.addEventListener('click',pageTurnEvent);
        });
        console.log('贴吧页面精简 by BackRunner: 帖子翻页监听添加完毕');
    }
    function pageTurnEvent(){
        console.warn('贴吧页面精简 by BackRunner: 帖子翻页事件触发');
        setTimeout(function(){
            var interval = setInterval(check,150 * checkrate);
            function check(){
                addListenerToPage();
                adinPageClean();
                tpointADClean();        
            }
            setTimeout(function(){
                addListenerToPage();
                adinPageClean();
                tpointADClean();
            },sleepTime);
            setTimeout(function(){
                addListenerToPage();
                adinPageClean();
                tpointADClean();
                clearInterval(interval);
            },finishTime/3);
        },sleepTimeWhenPageTurn);
    }
    //触点推广
    function tpointADClean(){        
        console.log('贴吧页面精简 by BackRunner: 开始精简触点推广');
        var pointad = document.getElementsByClassName('tpoint-imgs');
        console.log('贴吧页面精简 by BackRunner: 抓取到的广告元素数量: '+pointad.length);
        for(var i=0;i<pointad.length;i++){
            pointad[i].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(pointad[i].parentNode.parentNode.parentNode.parentNode.parentNode);
        }
        console.log('贴吧页面精简 by BackRunner: 触点推广精简完毕');
    }

    //列表内广告
    function adinListClean(){        
        console.log('贴吧页面精简 by BackRunner: 开始精简列表内广告');
        var adinList = document.getElementsByClassName('threadlist_rep_num');
        var num = 0;
        console.log('贴吧页面精简 by BackRunner: 列表内元素抓取量: '+adinList.length);
        for (i=0;i<adinList.length;i++){
            if (adinList[i].title === "广告"){
                num++;
                adinList[i].parentNode.parentNode.parentNode.parentNode.removeChild(adinList[i].parentNode.parentNode.parentNode);
            }
        }
        console.log('贴吧页面精简 by BackRunner: 列表内广告精简完毕,共精简 '+ num + ' 个');
    }

    //贴内广告
    function adinPageClean(){
        console.log('贴吧页面精简 by BackRunner: 开始精简贴内广告');
        var ad = document.getElementsByClassName('iframe_wrapper');
        console.log('贴吧页面精简 by BackRunner: 抓取到的广告元素数量: '+ad.length);
        for(i=0;i<ad.length;i++){
            ad[i].parentNode.parentNode.removeChild(ad[i].parentNode);
        }
        console.log('贴吧页面精简 by BackRunner: 贴内广告精简完毕');
    }

    //免登录看帖
    function noLogin(){
        try{
            if (unsafeWindow.PageData.user.is_login === 0){
                unsafeWindow.Object.freeze = null;
                unsafeWindow.PageData.user.is_login = 1;
                console.warn('贴吧页面精简 by BackRunner: 已开启免登录看帖');
            } else {
                console.warn('贴吧页面精简 by BackRunner: 当前已在登录状态');
            }
        } catch(e){
            console.error('贴吧页面精简 by BackRunner: 免登录看帖加载错误');
            console.error(e);
        }
    }
    function addNoLoginLZEventListener(){
        $('#lzonly_cntn').each(function(){            
            this.addEventListener('click',noLoginLZEvent);
        });              
        console.warn('贴吧页面精简 by BackRunner: 只看楼主按钮监听添加完毕');
    }
    //免登录只看楼主
    function noLoginLZEvent(){
        var search = location.search;
        var url;
        var seelz = false;
        if (search !== null){
            url = search.toString();
            if (url.indexOf('see_lz=1') != -1){
                seelz=true;
            }
        }        
        if (seelz){
            search = search.replace(/see_lz=1/g,"");
            if (location.search!=search){
                location.search = search;
                console.warn('贴吧页面精简 by BackRunner: 取消只看楼主');
            }
        } else {
            search += '&see_lz=1';
            if (location.search!=search){
                location.search = search;
                console.warn('贴吧页面精简 by BackRunner: 只看楼主');                
            }
        }
    }
    //更新提醒
    function updateAlert(){        
        var s_update = "贴吧页面精简 by BackRunner:\n检测到脚本版本更改\n";
        var version = GM_getValue("version");
        if (version !== GM_info.script.version){
            console.warn("贴吧页面精简 by BackRunner:检测到脚本版本更改:" + version + " → " + GM_info.script.version);
            if (version === undefined){
                version = "未知";
            }
            switch (version){
                default:
                    s_update += "版本已从 " + version + " 更新为 " + GM_info.script.version + "\n\n" + GM_info.script.version + "版本的更新内容为:\n【重要】精简头图功能修改,请修改您的设置!\n优化代码\n修正错误\n设置面板调整\n排除目录页\n";
                    break;
                case "2.4.5":
                    s_update += "版本已从 " + version + " 降级为 " + GM_info.script.version + "\n\n" + "建议使用最新版本的脚本以获得最佳体验\n降级可能会造成您的设置丢失,请检查设置\n";    
                    break;
            }
            s_update += "\n遇到任何问题请立刻到GreasyFork反馈\n觉得脚本好用可通过GreasyFork中的二维码或底部链接的二维码赞助我";
            window.alert(s_update);
            GM_setValue("version",GM_info.script.version);
        } else {
            console.warn("贴吧页面精简 by BackRunner:未检测到脚本版本更改");
        }
    }
    //创建顶栏控制面板
    function createControlPanel(){
        if (document.querySelector('#backrunnerJSSetting_root') === null){
            try{
                //userbar获取与主层创建
                var userbar = $('#com_userbar').children('ul')[0];
                var li = document.createElement('li');
                var div = document.createElement('div');               
                var a = document.createElement('a');

                //主层设置
                a.innerHTML = "贴吧页面精简脚本设置";
                div.setAttribute('style','padding-top:6px');

                //主层事件
                div.addEventListener('mouseenter',cpOnMouseEnter);                
                div.addEventListener('mouseleave',cpOnMouseLeave);

                //菜单层创建
                var menuroot = document.createElement('div');
                var menucon = document.createElement('div');
                var menudiv = document.createElement('div');
                menuroot.setAttribute('class','u_ddl');
                menuroot.setAttribute('id','backrunnerJSSetting_root');                
                menucon.setAttribute('class','u_ddl_con');
                menucon.setAttribute('id','backrunnerJSSetting_con');
                menudiv.setAttribute('class','u_ddl_con_top');
                menudiv.setAttribute('id','backrunnerJSSetting_main');
                menucon.appendChild(menudiv);
                menuroot.appendChild(menucon);

                //菜单层事件
                menuroot.addEventListener('mouseenter',cpOnMouseEnter);
                menuroot.addEventListener('mouseleave',cpOnMouseLeave);

                //菜单列表创建
                var menu = document.createElement('ui');
                //0:文本框 1:复选框 2:按钮
                createMenuItem(menu,1,"postprocess","后处理脚本","");
                createMenuItem(menu,1,"homepageprocess","主页精简","");
                createMenuItem(menu,1,"isHeadimg","精简列表页头图","");
                createMenuItem(menu,1,"homeProcess","个人主页精简","");
                createMenuItem(menu,1,"groupprocess","群组页面精简","");
                createMenuItem(menu,1,"nologin","免登录看帖","");
                createMenuItem(menu,0,"sleepTime","主脚本延迟时间");
                createMenuItem(menu,0,"delayScriptRunTimes","延迟脚本执行次数","");
                createMenuItem(menu,0,"sleepTimePage","翻页脚本延迟时间","");
                createMenuItem(menu,0,"checkrate","翻页脚本执行频率","");
                createMenuItem(menu,2,"refresh","刷新页面","刷新");
                createMenuItem(menu,2,"submit","提交设置","提交");
                menudiv.appendChild(menu);

                //菜单入口
                div.appendChild(a);
                div.setAttribute('class','u_menu_item');
                div.setAttribute('id','backrunnerJSSetting_item');
                li.appendChild(div);
                li.appendChild(menuroot);
                userbar.appendChild(li);

                //菜单内容初始化
                menuInitialize();

                //菜单内事件创建
                createMenuEvent();
            } catch(e){
                console.error(e);
            }
        } else {
            console.warn('贴吧页面精简 by BackRunner: 控制面板已存在');
        }
    }
    //菜单项创建
    function createMenuItem(menu,type,id,labelContent,innerContent){
        //层创建
        var li = document.createElement('li');
        var div = document.createElement('div');
        var d_a = document.createElement('div');
        var d_i = document.createElement('div');
        //层设置
        d_a.setAttribute('style','float:left;width:120px');
        switch(type){
            case 0:
                d_i.setAttribute('style','padding-top:5px;padding-left:128px');
                break;
            case 1:
                d_i.setAttribute('style','padding-top:8px;padding-left:170px');
                break;  
            case 2:
                d_i.setAttribute('style','padding-top:6px;padding-left:128px;');
                break;
        }        
        //元素创建
        var a = document.createElement('a');
        var i = document.createElement('input');
        //元素设置
        a.innerHTML = labelContent;
        switch(type){
            case 0:
                i.setAttribute('style','width:50px;text-align:right');
                i.setAttribute('id','backrunner_i_'+id);
                break;
            case 1:
                //复选框
                i.setAttribute('type','checkbox');        
                i.setAttribute('id','backrunner_i_'+id);
                break;
            case 2:
                //按钮
                i = document.createElement('button');
                i.innerHTML = innerContent;
                i.setAttribute('style','width:52px');
                i.setAttribute('id','backrunner_btn_'+id);
                break;
        }

        //元素添加到层
        d_a.appendChild(a);
        d_i.appendChild(i);        
        //元素层添加到主层
        div.appendChild(d_a);
        div.appendChild(d_i);
        //主层添加到li
        li.appendChild(div);
        //li添加到menu
        menu.appendChild(li);
    }
    //菜单初始化
    function menuInitialize(){
        menuInitialize_checkbox('postprocess',postprocess);
        menuInitialize_checkbox('homepageprocess',homePageProcess);
        menuInitialize_checkbox('homeProcess',homeProcess);
        menuInitialize_checkbox('isHeadimg',isHeadimg);
        menuInitialize_checkbox('groupprocess',groupPageProcess);
        menuInitialize_checkbox('nologin',noLoginProcess);
        menuInitialize_input('sleepTime',sleepTime);
        menuInitialize_input('delayScriptRunTimes',delayScriptRunTimes);
        menuInitialize_input('sleepTimePage',sleepTimeWhenPageTurn);
        menuInitialize_input('checkrate',checkrate);
    }
    //菜单checkbox初始化
    function menuInitialize_checkbox(id,variable){
        var i = document.getElementById('backrunner_i_'+id);
        if (i !== null){
            if (variable){
                i.checked = true;
            } else {
                i.checked = false;
            }
        } 
    }
    //菜单input初始化
    function menuInitialize_input(id,variable){
        var i = document.getElementById('backrunner_i_'+id);
        if (i !== null){
            i.value = variable;
        } 
    }

    //菜单内事件创建
    function createMenuEvent(){
        //刷新
        var btn_refresh = document.getElementById('backrunner_btn_refresh');
        if (btn_refresh !== null){
            btn_refresh.addEventListener('click',btn_refresh_click);
        }
        //提交
        var btn_submit = document.getElementById('backrunner_btn_submit');
        if (btn_submit !== null){
            btn_submit.addEventListener('click',btn_submit_click);
        }
    }
    //刷新按钮事件
    function btn_refresh_click(){
        window.location.reload(true);
    }
    //提交按钮事件
    function btn_submit_click(){
        postprocess = convertBoolValue('postprocess');
        homePageProcess = convertBoolValue('homepageprocess');
        homeProcess = convertBoolValue('homeProcess');
        isHeadimg = convertBoolValue('isHeadimg');
        groupPageProcess = convertBoolValue('groupprocess');
        noLoginProcess = convertBoolValue('nologin');
        sleepTime = convertNumValue('sleepTime');
        delayScriptRunTimes = convertNumValue('delayScriptRunTimes');
        sleepTimeWhenPageTurn = convertNumValue('sleepTimePage');
        checkrate = convertNumValue('checkrate');
        if (postprocess){
            if (window.confirm('确认要更改设置?')){
                replaceStoredSettings();             
                menuInitialize();
                window.location.reload(true);
            } else {
                menuInitialize();
            }              
        } else {
            if (window.confirm('【重要】\n您禁用了后处理脚本,本脚本绝大部分功能将无法使用\n\n确认要更改设置?')){
                replaceStoredSettings();             
                menuInitialize();
                window.location.reload(true);
            } else {
                menuInitialize();
            }              
        }

    }  
    //将菜单中的bool值赋给变量
    function convertBoolValue(id){
        var i = document.getElementById('backrunner_i_'+id);
        if (i !== null){
            if (i.checked){
                return true;
            } else {
                return false;
            }
        }
    }
    //将菜单中的数值赋给变量
    function convertNumValue(id){
        var i = document.getElementById('backrunner_i_'+id);
        if (i !== null){
            return(parseFloat(i.value));
        }
    }
    //控制面板鼠标事件
    function cpOnMouseEnter(){
        var cp = document.getElementById('backrunnerJSSetting_root');
        var item = document.getElementById('backrunnerJSSetting_item');
        if (item !== null){
            item.setAttribute('class','u_menu_item u_menu_hover');
        }
        if (cp !== null){
            cp.setAttribute('style','display:block;right:0;');
        }        
    }
    function cpOnMouseLeave(){
        var cp = document.getElementById('backrunnerJSSetting_root');
        var item = document.getElementById('backrunnerJSSetting_item');
        if (item !== null){
            item.setAttribute('class','u_menu_item');
        }
        if (cp !== null){
            cp.setAttribute('style','display:none;right:0');
        }
    }

    //替换储存的设置
    function replaceStoredSettings(){
        GM_setValue("postprocess",postprocess);
        GM_setValue("sleepTime",sleepTime);
        GM_setValue("delayScriptRunTimes",delayScriptRunTimes);
        GM_setValue("sleepTimeWhenPageTurn",sleepTimeWhenPageTurn);       
        GM_setValue("homePageProcess",homePageProcess);
        GM_setValue("homeProcess",homeProcess);
        GM_setValue("isHeadimg",isHeadimg);
        GM_setValue("groupPageProcess",groupPageProcess);
        GM_setValue("noLoginProcess",noLoginProcess);
        GM_setValue("checkrate",checkrate);
    }

    //底部信息输出
    function createFooterLayer(){
        var footDiv;
        var id;
        if (document.querySelector('#backrunnerJSFooter')===null){
            if (window.location.href.indexOf("tieba.baidu.com/f?") !== -1){
                try{
                    footDiv = document.getElementsByClassName('frs_content_footer_pagelet')[0];
                    foot = document.createElement('div');
                    id = document.createElement('div');
                    foot.setAttribute('class','footer');
                    foot.setAttribute('id','footer');
                    foot.setAttribute('style','padding-top:0px !important;');
                    id.setAttribute('id','backrunnerJSFooter');
                    createFooterElement(foot,"已应用由BackRunner制作的贴吧精简脚本","https://greasyfork.org/zh-CN/scripts/23687",false);
                    createFooterElement(foot,"捐赠作者(支付宝二维码)","https://sinacloud.net/backrunner/img/alipay.jpg",true);                
                    footDiv.appendChild(foot);
                    footDiv.appendChild(id);
                    console.warn('贴吧页面精简 by BackRunner: 底部信息添加完成');
                } catch(e){
                    console.error(e);
                }
            } else {
                if (window.location.href.indexOf("tieba.baidu.com/p/") !== -1){
                    try{
                        footDiv = document.getElementsByClassName('pb_footer')[0];
                        foot = document.createElement('div');
                        id = document.createElement('div');
                        foot.setAttribute('class','footer');
                        foot.setAttribute('id','footer');
                        foot.setAttribute('style','padding-top:0px !important;');
                        id.setAttribute('id','backrunnerJSFooter');
                        createFooterElement(foot,"已应用由BackRunner制作的贴吧精简脚本","https://greasyfork.org/zh-CN/scripts/23687",false);
                        createFooterElement(foot,"向作者捐款(支付宝二维码)","https://sinacloud.net/backrunner/img/alipay.jpg",true);                
                        footDiv.appendChild(foot);
                        footDiv.appendChild(id);
                        console.warn('贴吧页面精简 by BackRunner: 底部信息添加完成');
                    } catch(e){
                        console.error(e);
                    }
                }
            }
        } else {
            console.warn('贴吧页面精简 by BackRunner: 底部信息已存在');
        }
    }
    function addFinishTimeToFooter(){
        if (finishTime !== -1){
            addSplitLineToFooter(foot);
            createFooterElement(foot,"页面加载时间:" + finishTime+"ms","javascript:;",true);
        }
    }
    function addSplitLineToFooter(footer){
        try{
            var splitLine=document.createElement('span');
            splitLine.innerHTML="|";
            footer.appendChild(splitLine);
        }catch(e){
            console.error(e);
        }
    }
    function createFooterElement(footer,text,href,isLast){
        var splitLine=document.createElement('span');
        splitLine.innerHTML="|";
        var content = document.createElement('a');
        content.innerHTML=text;
        content.setAttribute('href',href);
        content.setAttribute('target',"_blank");
        content.setAttribute('pv_code',"0");
        footer.appendChild(content);
        if (!isLast){
            footer.appendChild(splitLine);
        }
    }
    //头图禁用
    function disableForumCard(){
        if (isHeadimg){
            try{
                var forumcard = document.getElementById('forum-card-banner');
                console.warn('贴吧页面精简 by BackRunner: 正在精简头图');
                if (forumcard !== null){
                    if (forumcard.getAttribute("src")!==""){
                        forumcard.setAttribute("src","");
                        forumcard.setAttribute("style","height:180px !important;background-color:white !important;");
                    }
                }
            } catch(e){
                console.error(e);
            }
        }
    }
})();