Greasy Fork is available in English.

兔兔兔区+

屏蔽用户|屏蔽帖子|ID统计|帖内搜索|发帖记录直达|快捷举报|楼主标记|只看TA|白色主题夜间主题去广告

// ==UserScript==
// @name              兔兔兔区+
// @namespace         https://greasyfork.org/zh-CN/scripts/411262-%E5%85%94%E5%85%94%E5%85%94%E5%8C%BA
// @version           2.1.8
// @description       屏蔽用户|屏蔽帖子|ID统计|帖内搜索|发帖记录直达|快捷举报|楼主标记|只看TA|白色主题夜间主题去广告
// @author            chinshry
// @include           https://bbs.jjwxc.net/bindex.php*
// @include           https://bbs.jjwxc.net/board.php*
// @include           https://bbs.jjwxc.net/newpost.php*
// @include           https://bbs.jjwxc.net/showmsg.php*
// @include           https://bbs.jjwxc.net/search.php*
// @include           https://bbs.jjwxc.net/filterword.php*
// @include           https://bbs.jjwxc.net/backend/filterReader.php*
// @include           https://bbs.jjwxc.net/userinfo.php*
// @include           https://bbs.jjwxc.net/postbypolice.php*
// @license           GPL-3.0 License
// @require           https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js
// ==/UserScript==


const IS_DARK_MODE = Boolean(Number(localStorage.getItem('themeJJ') == null ? 0 : localStorage.getItem('themeJJ')));
const bgColor = IS_DARK_MODE ? '#1A1A1A' : 'white';
const bgCss = { "background-color": bgColor };
const borderCss = { "border-color": bgColor, "border": "none" };

const pathname = window.location.pathname;
const IS_NEWPOST = pathname.indexOf('newpost') >= 0;
const IS_BOARD = IS_NEWPOST || pathname.indexOf('board') >= 0;
const IS_POST = pathname.indexOf('showmsg') >= 0;
const IS_SEARCH = pathname.indexOf('search') >= 0;
const IS_FILTER = pathname.indexOf('filterword') >= 0 || pathname.indexOf('filterReader') >= 0;

(function($) {
    'use strict';

    const BOARD_ID = IS_BOARD || IS_POST || IS_SEARCH ? getPageParams('board') : '';
    const POST_ID = IS_POST ? getPageParams('id') : '';
    const PAGE = IS_POST ? getPageParams('page') : '';
    const BOARD_TYPE = IS_BOARD ? getPageParams('type') : '';

    var page_count = 0
    var id_all = {}
    var reply_all = []
    var replyStrBody = ''
    var dataSortIndex = []

    console.log("BOARD_ID = " + BOARD_ID);
    console.log("POST_ID = " + POST_ID);

    var Style = {
        init() {
            if(IS_DARK_MODE){
                addGlobalStyle('*', { color: "#B2B2B2" });
            }
            addGlobalStyle('body', bgCss);
            addGlobalStyle('.blockUI.blockMsg', bgCss);
            addGlobalStyle('.blockUI.blockMsg', { border: "1px solid #000000" });
            addGlobalStyle('tr', bgCss);
            addGlobalStyle('td', bgCss);

            var themeChangeButton = document.createElement("div");
            themeChangeButton.className = "themeButton";
            themeChangeButton.style.cssText = "width:35px;height:35px;top: 20px;right: 15px;cursor:pointer;border:1px solid #666666;position: fixed;z-index: 10000; font-size: small;line-height: 35px;text-align: center;border-radius: 20px;";
            themeChangeButton.style.backgroundColor = 'white';
            themeChangeButton.style.color = 'black';
            themeChangeButton.textContent = "换肤";
            document.getElementsByTagName("body")[0].appendChild(themeChangeButton);
        },
        removeAD() {
            $('.width_300').parent().remove();
        },
        board() {
            Style.removeAD()
            const reportNode = document.createElement('script');
            reportNode.type = 'text/javascript';
            reportNode.src = '/scripts/userreport.js?ver=20200202';
            document.head.appendChild(reportNode);
            if (IS_NEWPOST){
                const blockUItNode = document.createElement('script');
                blockUItNode.type = 'text/javascript';
                blockUItNode.src = '//static.jjwxc.net/scripts/jquery.blockUI.pack.js';
                document.head.appendChild(blockUItNode);
            }

            addGlobalStyle('a:link', { color: IS_DARK_MODE ? '#b2b2b2' :'#161616' });
            addGlobalStyle('a:visited', { color: '#808080' });
            addGlobalStyle('a:hover', { color: '#bf7326' });

            addGlobalStyle('a.board-bam:link', { color: '#669900' });
            addGlobalStyle('a.board-bam:hover', { color: '#bf7326' });

            addGlobalStyle('a.board-report:link', { color: '#669900' });
            addGlobalStyle('a.board-report:hover', { color: '#bf7326' });
       },
        search() {
            Style.removeAD();
            addGlobalStyle('table', { "border-color": bgColor });
        },
        page() {
            addGlobalStyle('.page-reply:link', { color: IS_DARK_MODE ? '#b2b2b2' :'#000000' });
            addGlobalStyle('.page-reply:hover', { color: '#bf7326' });
            addGlobalStyle('.page-reply:visited', { color: '#808080' });
            addGlobalStyle('table', borderCss);
            addGlobalStyle('td', borderCss);
            for (var i = 1; i < 25; i++) {
                changeImgBg(i)
            }
            $('#imgurl').remove()
            $('.ad360_box').remove()
            $('.textbook').remove()
        },
        filter() {
            addGlobalStyle('b', { "margin-left": '15px' });
        },
        idCount(){
            var div_side_bar = document.createElement("div");
            div_side_bar.id = "countIDButton";
            div_side_bar.textContent = 'ID统计'
            div_side_bar.style.cssText = 'cursor: pointer;font-size: 12px;line-height: 20px;width: 56px;height: 20px;text-align: center;overflow: hidden;position: fixed;right: 0px;top: 70px;padding: 4px 4px;background-color: white;z-index: 10001;border-radius: 8px 0px 0px 8px;box-shadow: rgba(0, 85, 255, 0.0980392) 0px 0px 20px 0px;border: 1px solid rgb(233, 234, 236);';
            div_side_bar.style.color = 'black';
            $('#boardname').first().after(div_side_bar);

            var div_data = document.createElement("div");
            div_data.id = 'countIDList'
            div_data.style.cssText = 'display: none;position: fixed;height: 85%;width: 350px;right: 0px;top: 140px;z-index: 9999;';
            var div_data_inner = document.createElement("div");
            div_data_inner.id = 'countIDListInner'
            div_data_inner.style.cssText = 'display: block;overflow: hidden;height: inherit;border-radius: 8px;box-shadow: rgba(106, 115, 133, 0.219608) 0px 6px 12px 0px;border: 1px solid black ;background-color: white;overflow: auto; white-space: nowrap;';
            var div_data_text = document.createElement("div");
            div_data_text.id = 'countIDListText'
            div_data_text.style.cssText = 'padding: 10px; box-sizing: border-box;';

            div_data.append(div_data_inner);
            div_data_inner.append(div_data_text);

            document.body.appendChild(div_data);
        },
        postSearch(){
            var div_side_bar = document.createElement("div");
            div_side_bar.id = "postSearchButton";
            div_side_bar.textContent = '贴内搜索'
            div_side_bar.style.cssText = 'cursor: pointer;font-size: 12px;line-height: 20px;width: 56px;height: 20px;text-align: center;overflow: hidden;position: fixed;right: 0px;top: 105px;padding: 4px 4px;background-color: white;z-index: 10001;border-radius: 8px 0px 0px 8px;box-shadow: rgba(0, 85, 255, 0.0980392) 0px 0px 20px 0px;border: 1px solid rgb(233, 234, 236);';
            div_side_bar.style.color = 'black';
            $('#boardname').first().after(div_side_bar);


            var div_data = document.createElement("div");
            div_data.id = 'postSearchList'
            div_data.style.cssText = 'text-align:center; display: none;position: fixed;height: 85%;width: 710px;right: 0px;top: 140px;z-index: 9999;';
            var div_data_inner = document.createElement("div");
            div_data_inner.id = 'postSearchListInner'
            div_data_inner.style.cssText = 'padding: 10px; display: block;overflow: hidden;height: inherit;border-radius: 8px;box-shadow: rgba(106, 115, 133, 0.219608) 0px 6px 12px 0px;border: 1px solid black ;background-color: white;overflow: auto; white-space: nowrap;';
            var div_data_text = document.createElement("div");
            div_data_text.id = 'postSearchListText'
            div_data_text.style.cssText = 'box-sizing: border-box;';

            var div_data_input = document.createElement("input");
            div_data_input.id = 'postSearchInput'
            div_data_input.type = 'text'
            div_data_input.size = '10'
            var div_data_search_btn = document.createElement("input");
            div_data_search_btn.id = 'postSearchStart'
            div_data_search_btn.type = 'button'
            div_data_search_btn.style.cssText = 'margin: 10px 0px 20px 10px;';
            div_data_search_btn.value = '搜索'

            div_data.append(div_data_inner);
            div_data_inner.append(div_data_input);
            div_data_inner.append(div_data_search_btn);
            div_data_inner.append(div_data_text);

            document.body.appendChild(div_data);
        }
    }

    function addGlobalStyle(node, styleParams) {
        var styleStr = JSON.stringify(styleParams);
        var styleF = styleStr.replace(/"([^"]*)"/g, "$1").replace(/[,]/g, ' !important;').replace('}', ' !important}');
        var css = node + styleF;
        // console.log(css);
        var head = document.getElementsByTagName('head')[0];
        if (!head) { return; }
        var style = document.createElement('style');
        style.type = 'text/css';
        style.innerHTML = css;
        head.appendChild(style);
    }

    function changeImgBg(imgId) {
        var styleStr = JSON.stringify(styleParams)
        var styleParams = {
            "background-image": "url(img/grzx/" + imgId + ".png)",
            "background-size": "100%",
            "background-position": "0 0"
        }
        addGlobalStyle('.image' + imgId, styleParams);
    }

    function getPageParams(key, url) {
        var str = '';
        if (typeof (url) == "undefined") {
            var search = window.location.search;
            str = search.substring(1, search.length);
        } else {
            str = url.split("?")[1];
        }
        let arr = str.split("&");
        let obj = new Object();
        for (let i = 0; i < arr.length; i++) {
            let tmp_arr = arr[i].split("=");
            if (tmp_arr[0] == "keyword") {
                obj[tmp_arr[0]] = tmp_arr[1];
            } else {
                obj[decodeURIComponent(tmp_arr[0])] = decodeURIComponent(tmp_arr[1]);
            }
        }
        return obj[key];
    }

    function initStyle() {
        Style.init();
        if (IS_BOARD) {
            Style.board();
        } else if (IS_POST) {
            Style.page();
            Style.idCount();
            Style.postSearch();
        } else if (IS_SEARCH) {
            Style.search();
        } else if (IS_FILTER) {
            Style.board();
            Style.filter();
        } else {
            Style.removeAD();
        }
    }

    $(function () {
        initStyle()
        var initNodes = {
            board() {
                $('#subidform_submit').find('button').eq(0).text("屏蔽设置");
                let nodes = $('#msglist').children().children().toArray();

                if (IS_NEWPOST){
                    nodes = $('body').find('table').eq(2).children().children().toArray();
                }
                let blockPosts = localStorage.BlockPosts || '';
                let blockUsers = localStorage.BlockUsers || '';
                nodes.shift();
                for (let node of nodes) {
                    let reportNode = $(node).find('td').eq(1);
                    let titleNode = $(node).find('td').eq(3);
                    let authorNode = $(node).find('td').eq(4);
                    let title = titleNode[0].innerText;
                    let url = $(titleNode).children().attr('href');
                    if (url == undefined) {
                        url = $(titleNode).children().eq(1).attr('href');
                    }
                    let id = getPageParams('id', url);
                    let authorName = $.trim($(authorNode).text())

                    $(reportNode).children().remove();
                    $(reportNode).append(`<a class="board-bam" id="${id}" board="${BOARD_ID}" data="${title}" href="javascript:void(0);" style = "font-size:14px">屏蔽</a>`);
                    $(reportNode).append(`<a class="board-report" href="javascript:;" onclick="userreportshow(${id}, 0, 0, ${BOARD_ID})" style = "font-size:14px">举报</a>`);
                    $(authorNode).html("");

                    $(authorNode).append(`<a class="board-author" href="https://bbs.jjwxc.net/search.php?act=search&board=${BOARD_ID}&keyword=${authorName}&topic=4" target="_blank">&nbsp${authorName}</font></a>`);

                    if (blockPosts !== '') {
                        var blockPostsJs = JSON.parse(blockPosts);
                        if (blockPostsJs.hasOwnProperty(id)) {
                            $(node).remove();
                            console.log("已隐藏帖子 " + title);
                        }
                    }
                    if (blockUsers !== '') {
                        var blockUsersJs = JSON.parse(blockUsers);
                        if (blockUsersJs.indexOf(authorName) != -1) {
                            $(node).remove();
                            console.log("已隐藏 " + authorName + " 发的帖子 " + title);
                        }
                    }
                }
            },
            page(start) {
                var lzIdenti = $('.authorname').eq(0).find('font').eq(2).text();
                console.log("楼主 " + lzIdenti);
                let title = $('#msgsubject').text().split("主题:")[1]
                let blockUsers = localStorage.BlockUsers || '';

                $('.authorname').each(function (index, node) {
                    if (index < start) {
                        return true;
                    }

                    var isNormalFloor = start == 0;
                    console.log("isNormalFloor = " + isNormalFloor);

                    var starNode;
                    if (isNormalFloor) {
                        starNode =  $(node).find('font').eq(-2);
                    } else {
                        starNode =  $(node).find('font').eq(-1);
                    }
                    $(starNode).text("  " + $(starNode).text().split("来自")[1]);

                    var replyIdNode;
                    var replyNameNode;
                    var replyName;

                    if (index == 0) {
                        var lzAuthornameNode = $('.authorname').eq(0);
                        replyIdNode = $(node).children().children().eq(2);
                        $(node).find('a').eq(0).after(`<a class="board-bam" id="${POST_ID}" board="${BOARD_ID}" data="${title}" href="javascript:void(0);" style = "font-size:14px; margin-left:8px">屏蔽该帖</a>`);
                        replyNameNode = $(replyIdNode).parent().contents()
                            .filter(function () {
                            return this.nodeType == Node.TEXT_NODE;
                        });
                    } else {
                        replyIdNode = $(node).children().eq(2);
                        replyNameNode = $(node).contents()
                            .filter(function () {
                            return this.nodeType == Node.TEXT_NODE;
                        });
                    }

                    if (index == 0) {
                        replyName = replyNameNode[0].wholeText.split("|")[0];
                        replyNameNode[1].replaceData(0, replyNameNode[1].length, replyNameNode[1].wholeText.split("留言")[0]);
                        $(replyNameNode)[0].remove();
                    } else if (!isNormalFloor) {
                        replyName = replyNameNode[2].wholeText.split("|")[0];
                        replyNameNode[3].replaceData(0, replyNameNode[3].length, replyNameNode[3].wholeText.split("留言")[0]);
                        $(replyNameNode)[2].remove();
                    } else {
                        replyName = replyNameNode[1].wholeText.split("|")[0];
                        replyNameNode[2].replaceData(0, replyNameNode[2].length, replyNameNode[2].wholeText.split("留言")[0]);
                        $(replyNameNode)[1].remove();
                    }

                    var displayName;

                    if ($(replyIdNode).text() == lzIdenti) {
                        displayName = "[楼主]" + replyName;
                        $(replyIdNode).prev().after(`<a class="page-reply" id="replyName_${replyName}" href="https://bbs.jjwxc.net/search.php?act=search&board=${BOARD_ID}&keyword=${replyName}&topic=4" target="_blank" style="text-decoration: underline; text-underline-offset: 4px;">${displayName}</a>`);
                    } else {
                        displayName = replyName;
                        $(replyIdNode).prev().after(`<a class="page-reply" id="replyName_${replyName}" href="https://bbs.jjwxc.net/search.php?act=search&board=${BOARD_ID}&keyword=${replyName}&topic=4" target="_blank">${displayName}</a>`);
                    }

                    if (index == 0) {
                        // $(".board-bam").after(`<a class="board-bam-user-temp" data="${replyName}" href="javascript:void(0);" style = "font-size:14px; margin-left:8px">隐藏TA</a>`);
                        // $(".board-bam").after(`<a class="board-bam-user" data="${replyName}" href="javascript:void(0);" style = "font-size:14px; margin-left:8px">屏蔽TA</a>`);
                    } else {
                        // $(node).next().prepend(`<a class="board-bam-user-temp" data="${replyName}" href="javascript:void(0);" style = "font-size:14px; margin-left:8px">隐藏TA</a>`);
                        // $(node).next().prepend(`<a class="board-bam-user" data="${replyName}" href="javascript:void(0);" style = "font-size:14px; margin-left:8px">屏蔽TA</a>`);
                        var authertParentNode = $(node).parent();
                        var buttonParentNode;
                        if (isNormalFloor) {
                            buttonParentNode = authertParentNode.next();
                        } else {
                            buttonParentNode = $(node).parent().clone();
                            authertParentNode.after(buttonParentNode);
                            authertParentNode.children().eq(1).remove();
                            buttonParentNode.children().eq(0).remove();
                            buttonParentNode.children().eq(0).attr("style", "text-align:right")
                        }
                        buttonParentNode.children().eq(0).append(`<a class="board-only-show-user" data="${replyName}" href="javascript:void(0);" style = "font-size:14px; margin-left:0px">只看TA</a>`);
                    }

                    if (blockUsers !== '') {
                        var blockUsersJs = JSON.parse(blockUsers);
                        if (blockUsersJs.indexOf(replyName) != -1) {
                            $(node).parent().prev().remove();
                            $(node).parent().prev().remove();
                            $(node).parent().next().remove();
                            $(node).parent().remove();
                            console.log("已屏蔽 " + replyName + " 的楼层 " + index);
                        }
                    }
                })
                page_count = $('.authorname').length
            },
            filter() {
                let oldTab = document.querySelector("body > center > b");
                $(oldTab).attr("class", "filter-bam-keyword");
                $(oldTab).attr("style", "font-size:20px");
                // $(oldTab).after(`<b class="filter-bam-user">屏蔽用户设置</b>`);
                $(oldTab).after(`<b class="filter-bam-post">屏蔽帖子设置</b>`);
            }
        }

        var Event = {
            addBlockPost(node) {
                let id = $(node).attr('id')
                let title = $(node).attr('data').split("[2]")[0]
                let board = $(node).attr('board')
                console.log($('#boardtr_' + id).length)
                if (IS_NEWPOST){
                    $(node).parent().parent().parent().parent().parent().parent().remove();
                } else {
                    $('#boardtr_' + id).remove();
                }

                let arr = localStorage.getItem('BlockPosts') ? JSON.parse(localStorage.getItem('BlockPosts')) : {};
                arr[id] = [board, title]
                localStorage.setItem('BlockPosts', JSON.stringify(arr));
            },
            onlyShowUser(node) {
                let name = $(node).attr('data')
                let newNode = $(".page-reply:not(#replyName_" + name + ")");
                $(newNode).parent().parent().prev().remove();
                $(newNode).parent().parent().prev().remove();
                $(newNode).parent().parent().next().remove();
                $(newNode).parent().parent().next().remove();
                $(newNode).parent().parent().remove();
            },
            addBlockUserTemp(node) {
                let name = $(node).attr('data')
                let newNode = $('#replyName_' + name);
                $(newNode).parent().parent().prev().remove();
                $(newNode).parent().parent().prev().remove();
                $(newNode).parent().parent().next().remove();
                $(newNode).parent().parent().next().remove();
                $(newNode).parent().parent().remove();
            },
            addBlockUser(node) {
                let name = $(node).attr('data')
                Event.addBlockUserTemp(node);

                let arr = localStorage.getItem('BlockUsers') ? JSON.parse(localStorage.getItem('BlockUsers')) : [];
                if (arr.indexOf(name) == -1) {
                    arr.unshift(name)
                    localStorage.setItem('BlockUsers', JSON.stringify(arr));
                }
            },
            showBlockUser(node) {
                $(node).attr("style", "font-size:20px");
                $(node).siblings().attr("style", "font-size:16px");
                let arr = localStorage.getItem('BlockUsers') ? JSON.parse(localStorage.getItem('BlockUsers')) : [];
                console.log(arr);

                $("table").eq(1).attr("style", "visibility:hidden");
                let blockTable = $("table").eq(2).children().toArray()[0]
                $(blockTable).parent().next().attr("style", "visibility:hidden");

                let tips = $(blockTable).parent().next().next().next().find('tr').eq(0)
                tips.html(`<td>温馨提示:<br>1、在帖子的楼层中点“屏蔽TA”的用户名会被添加到该列表,刷新仍旧有效。<br>2、而帖子的楼层中点“隐藏TA”只临时隐藏当前贴中该用户的回复楼层,刷新失效。<br>3、列表中的用户,会屏蔽该用户名所发的帖子,并屏蔽帖子中该用户名回复的楼层<br><br></td>`)

                let blockTrs = $(blockTable).children().toArray()
                let tableTab = '<tr align="center" id="filtertablehead">' +
                    '<td style="font-weight: 700;width: 70%">屏蔽用户名</td>' +
                    '<td style="font-weight: 700;width: 30%">操作</td>' +
                    '</tr>'
                for (let blockTr of blockTrs) {
                    blockTr.remove()
                }
                $(blockTable).append($(tableTab))
                if (arr.length != 0) {
                    let html =''
                    for(let userName of arr){
                        html += '<tr align="center" id="' + userName + '">' +
                            '     <td  style="width: 70%"><a href="https://bbs.jjwxc.net/search.php?act=search&board=2&keyword='+ userName + '&topic=4" target="_blank">' + userName + '</a></td>' +
                            '     <td style="width: 30%"><button class="filter-bam-user-del" data="' + userName + '">解除屏蔽</button></td>' +
                            '</tr>'
                    }
                    $(blockTable).append($(html))
                }
            },
            showBlockPost(node) {
                $(node).attr("style", "font-size:20px");
                $(node).siblings().attr("style", "font-size:16px");
                let arr = localStorage.getItem('BlockPosts') ? JSON.parse(localStorage.getItem('BlockPosts')) : {};
                console.log(arr);

                let tableIndex = 2
                if (pathname.indexOf('filterword') >= 0) {
                    tableIndex = 3
                    $("table").eq(tableIndex - 2).attr("style", "display:none");
                }

                $("table").eq(tableIndex - 1).attr("style", "display:none");
                let blockTable = $("table").eq(tableIndex).children().toArray()[0]
                $(blockTable).parent().next().attr("style", "visibility:hidden");
                let tips = $(blockTable).parent().next().next().next().find('tr').eq(0)
                tips.html(`<td>温馨提示:<br>在主页点击“屏蔽”和帖子首楼点击“屏蔽此贴”的帖子会被添加到该列表,刷新仍旧有效。<br><br></td>`)

                let blockTrs = $(blockTable).children().toArray()
                let tableTab = '<tr align="center" id="filtertablehead">' +
                    '<td style="font-weight: 700;width: 20%">帖子ID</td>' +
                    '<td style="font-weight: 700;width: 70%">帖子标题</td>' +
                    '<td style="font-weight: 700;width: 10%">操作</td>' +
                    '</tr>'
                for (let blockTr of blockTrs) {
                    blockTr.remove()
                }
                $(blockTable).append($(tableTab))
                if (arr.length != 0) {
                    let html =''
                    for(let postId in arr){
                        let boardId = arr[postId][0]
                        let postTitle = arr[postId][1]
                        html = '<tr align="center" id="' + postId + '">' +
                            '<td style="width: 20%">' + postId + '</td>' +
                            '<td style="width: 70%"><a href="https://bbs.jjwxc.net/showmsg.php?board=' +boardId + '&id=' + postId + '" target="_blank">' + postTitle + '</a></td>' +
                            '<td style="width: 10%"><button class="filter-bam-post-del" data="' + postId + '">解除</button></td>' +
                            '</tr>' + html
                    }
                    $(blockTable).append($(html))
                }

            },
            delBlockUser(node) {
                let name = $(node).attr('data')
                let arr = localStorage.getItem('BlockUsers') ? JSON.parse(localStorage.getItem('BlockUsers')) : [];
                for(let i=0;i<arr.length;i++){
                    if(arr[i] == name){
                        arr.splice(i,1)
                        localStorage.setItem('BlockUsers', JSON.stringify(arr));
                        $(node).parent().parent().remove()
                    }
                }
            },
            delBlockPost(node) {
                let postId = $(node).attr('data')
                let arr = localStorage.getItem('BlockPosts') ? JSON.parse(localStorage.getItem('BlockPosts')) : {};
                delete arr[postId];
                localStorage.setItem('BlockPosts', JSON.stringify(arr));
                $(node).parent().parent().remove()
            },
            switchSkin() {
                // 0是white 1是black
                var oldTheme = Boolean(Number(localStorage.getItem('themeJJ') == null ? 0 : localStorage.getItem('themeJJ')));
                var newTheme = Number(!oldTheme);
                localStorage.setItem('themeJJ', newTheme);
                location.reload();
            },
            countID() {
                // ID统计
                if ($("#countIDButton").text() == "ID统计") {
                    if (dataSortIndex.length != 0){
                        countIDListFinish()
                    } else {
                        getReplyList(0, 1)
                    }
                } else {
                    $("#countIDList").hide();
                    $("#countIDButton").text('ID统计');
                    $("#countIDButton").css('color', 'black');
                }
            },
            postSearch() {
                // 帖内搜索
                if ($("#postSearchButton").text() == "贴内搜索") {
                    if (reply_all.length != 0){
                        getReplyListFinish()
                    } else {
                        getReplyList(0, 2)
                    }
                } else {
                    $("#postSearchList").hide();
                    $("#postSearchButton").text('贴内搜索');
                    $("#postSearchButton").css('color', 'black');
                }
            },
            filterPost() {
                // 搜索过滤
                var searchKey = document.getElementById("postSearchInput").value

                var content = document.getElementById("postSearchListText")
                var values = replyStrBody.split(searchKey);
                content.innerHTML = values.join('<span style="background:yellow;">' + searchKey + '</span>');

                var FloatReplyArr = $('.FloatReplyBody');
                var searchResultNum = 0
                for(let item of FloatReplyArr){
                    if(item.innerHTML.search(searchKey) == -1){
                        $(item).parent().css('visibility', 'collapse')
                    } else {
                        $(item).parent().css('visibility', 'visible')
                        searchResultNum += 1
                    }
                }
                var titleStr = `搜索完毕 共${searchResultNum}层提及`
                $('#tableTitle').text(titleStr)
            },
            eventRegister() {
                $(document).on('click', '#countIDButton', function () {
                    Event.countID(this);
                })
                $(document).on('click', '#postSearchButton', function () {
                    Event.postSearch(this);
                })
                $(document).on('click', '#postSearchStart', function () {
                    Event.filterPost(this);
                })
                $(document).on('click', '.themeButton', function () {
                    Event.switchSkin(this);
                })
                $(document).on('click', '.board-bam', function () {
                    Event.addBlockPost(this);
                })
                $(document).on('click', '.board-only-show-user', function () {
                    Event.onlyShowUser(this);
                })
                $(document).on('click', '.board-bam-user-temp', function () {
                    Event.addBlockUserTemp(this);
                })
                $(document).on('click', '.board-bam-user', function () {
                    Event.addBlockUser(this);
                })
                $(document).on('click', '.filter-bam-keyword', function () {
                    location = 'https://bbs.jjwxc.net/filterword.php'
                })
                $(document).on('click', '.filter-bam-user', function () {
                    Event.showBlockUser(this);
                })
                $(document).on('click', '.filter-bam-post', function () {
                    Event.showBlockPost(this);
                })
                $(document).on('click', '.filter-bam-user-del', function () {
                    Event.delBlockUser(this);
                })
                $(document).on('click', '.filter-bam-post-del', function () {
                    Event.delBlockPost(this);
                })
            }
        }

        function initPages(start) {
            if (IS_BOARD) {
                initNodes.board()
                Event.eventRegister()
            } else if (IS_POST) {
                initNodes.page(start);
                Event.eventRegister()
            } else if (IS_FILTER) {
                initNodes.filter();
                Event.eventRegister()
            }
        }

        initPages(page_count);

        function countIDListFinish() {
            var strBody = ''
            var floorNum = 0
            dataSortIndex.forEach((key, index) =>{
                floorNum += id_all[key].num
                strBody += `<tr><td style="text-align: center;">NO.${index + 1}</td>
                <td style="text-align: center;">${key}</td>
                <td style="text-align: center;">${id_all[key].name}</td>
                <td style="text-align: center;">${id_all[key].num}</td></tr>`
            })
            var str =
                `<table style="background-color: #999933;">
                <caption style="font-size: large;font-weight: bold;">共${dataSortIndex.length}个ID ${floorNum}层楼</caption>` +
                `<tr><td style="text-align: center;">序号</td>
                <td style="text-align: center;">ID</td>
                <td style="text-align: center;">昵称</td>
                <td style="text-align: center;">楼层</td></tr>` +
                strBody + "</table>";
            $("#countIDListText").html(str);

            $("#countIDList").show();
            $("#countIDButton").text('隐藏窗口');
            $("#countIDButton").css('color', '#ff8e29');
        }

        function getReplyListFinish() {
            var strBody = ''
            reply_all.forEach((value) =>{
                strBody += `<tr style="vertical-align:top"><td style="text-align:center;">${value.floor}</td>
                <td class="FloatReplyBody" style="text-align:center;width: 120px;white-space:pre-line;">${value.author}</td>
                <td class="FloatReplyBody" style="text-align:left;white-space: pre-line;word-break: break-word;">${value.replybody}</td></tr>`
            })
            var str =
                `<table style="background-color: #999933;">
                <caption id="tableTitle" style="font-size:large;font-weight:bold;">初始化完毕 本帖共${reply_all.length}层楼</caption>` +
                `<tr><td style="text-align: center;">楼层</td>
                <td style="text-align:center;">昵称</td>
                <td style="text-align:center;">回复内容</td></tr>` +
                strBody + "</table>";
            $("#postSearchListText").html(str);
            var tableImgArr = $('#postSearchListText').find('img')
            for(let item of tableImgArr){
                $(item).css("max-height","150px")
                $(item).css("max-width","140px")
            }
            replyStrBody = $("#postSearchListText").html();

            $("#postSearchList").show();
            $("#postSearchButton").text('隐藏窗口');
            $("#postSearchButton").css('color', '#ff8e29');
        }

        function getReplyList(page=0, fun) {
            $.ajax({
                type: 'POST',
                url: "https://bbs.jjwxc.net/frameindex.php?c=showMsg&action=showMoreReply",
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
                    'Accept': 'application/json'
                },
                data: {
                    'board': BOARD_ID,
                    'id': POST_ID,
                    'page': page
                },
                async:true,
                success: function (response) {
                    var result = JSON.parse(response);
                    console.log("=======getReplyList=======" + (page + 1))
                    switch (fun) {
                        case 1: {
                            countIDList(result, page)
                            break
                        }
                        case 2: {
                            postSearchList(result, page)
                            break
                        }
                    }
                },
                error: function (err) {
                    console.log("错误 " + err);
                }
            });
        }

        function countIDList(result, page){
            $("#countIDButton").text('第' + (page + 1) + '页');
            if (result.data.replies.length != 0) {
                var dataList = result.data.replies
                if(dataList instanceof Object){
                    Object.keys(dataList).forEach((key) =>{
                        getOutputList(dataList[key])
                    })
                } else {
                    dataList.forEach((value) =>{
                        getOutputList(value)
                    })
                }
                getReplyList(page + 1, 1)
            } else {
                dataSortIndex = Object.keys(id_all).sort(function(a,b){ return id_all[b].num-id_all[a].num;});
                countIDListFinish()
            }
        }

        function postSearchList(result, page){
            $("#postSearchButton").text('第' + (page + 1) + '页');
            if (result.data.replies.length != 0) {
                var dataList = result.data.replies
                if(dataList instanceof Object){
                    Object.keys(dataList).forEach((key) =>{
                        reply_all = reply_all.concat(dataList[key])
                    })
                } else {
                    reply_all = reply_all.concat(dataList)
                }
                getReplyList(page + 1, 2)
            } else {
                getReplyListFinish()
            }
        }

        function getOutputList(value) {
            var id = value.readerIdenti.split(">")[1].split("<")[0];
            if (id_all[id] != undefined) {
                id_all[id].num = id_all[id].num + 1;
                if (id_all[id].name.search("\\*") != -1 && value.author.search("\\*") == -1) {
                    id_all[id].name = value.author;
                }
            } else {
                id_all[id] = { name: value.author, num: 1 };
            }
        }

        $('#showmore_button').click(function() {
            setTimeout(function () {
                initPages(page_count);
                if ($('#showmore_button').length == 0) {
                    let newPage = Number(PAGE) + 1;
                    if (isNaN(newPage)) {
                        newPage = 1;
                    }
                    let newPageHref = "?board=" + BOARD_ID +"&id=" + POST_ID + "&page=" + newPage;
                    $('#pager_top').append(`<a href="${newPageHref}">${newPage + 1}</a>`);
                    $('#pager_bottom').append(`<a href="${newPageHref}">${newPage + 1}</a>`);
                }
            },2000)
        });

    })
})(jQuery);