new script

block the user you don't want to see his reply.

Fra og med 17.11.2021. Se den nyeste version.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

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

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

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

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

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         new script
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  block the user you don't want to see his reply.
// @author       kumiko
// @match        *://www.cc98.org/topic/*
// @match        *://www.cc98.org/newTopics
// @match        *://www.cc98.org/focus
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        GM_setValue
// @grant        GM_getValue
// @license      AGPL-3.0
// @require      https://greasyfork.org/scripts/2199-waitforkeyelements/code/waitForKeyElements.js?version=6349
// ==/UserScript==

let starttime=new Date();
console.log ("==> Script start.", starttime );

// 添加拉黑按钮
function addUserBtn(commentlike, user_message) {
    let b = document.createElement('button');
    b.textContent = '拉黑';
    b.style.cssText = 'width: 25%;height: 25%; text-align: center; vertical-align:bottom; margin-left: 8px';
    b.addEventListener('click', banUser);
    b.user = true;
    b.user_message = user_message;
    commentlike.appendChild(b);
}

function loadFocus() {
    console.log('Run script at focus or newTopic page');
    var topics = document.querySelectorAll('.focus-topic');
    topics.forEach(
        function(el) {
            var user_message = el.querySelector('.focus-topic-userName');
            if (user_message) {
                if (removeTopic(user_message) == false) {}
            }
        }
    );
}



// 删除当前回复
function removeReply(user_message) {
    var user_name = user_message.text;
    if (GM_getValue(user_name, false)) {
        try {
            user_message.offsetParent.remove();
            console.log ("==> Rmove user's reply ", user_name );
        } catch (e) {}

        return true;
    }
    return false;
}

function banUser(event) {
    var r = window.confirm('确认拉黑此用户?');
    if (r) {
        var user_name = event.currentTarget.user_message.text;
        GM_setValue(user_name, true);
        removeReply(event.currentTarget.user_message);
    }
}


function loadReply() {
    console.log('Begin Search Reply');
    var replys = document.querySelectorAll('.reply');
    replys.forEach(
        function(el) {
            var user_message = el.querySelector('.userMessage-userName');
            if (user_message) {
                var commentlike = el.querySelector('#commentlike');
                if (removeReply(user_message) == false) {
                    addUserBtn(commentlike, user_message);
                }
            }
        }
    );
}


function loadHot() {
    console.log('Begin Search Hot Reply');
    var replys = document.querySelectorAll('[id^=hot]');

    replys.forEach(
        function(el) {
            var user_message = el.querySelector('.userMessage-userName');
            if (user_message) {
                var commentlike = el.querySelector('#commentlike');
                if (removeReply(user_message) == false) {
                    addUserBtn(commentlike, user_message);
                }
            }
        }
    );
}


function removeTopic(user_message) {
    var user_name = user_message.textContent;
    if (GM_getValue(user_name, false)) {
        try {
            user_message.parentElement.parentElement.remove();
            console.log ("==> Rmove user's topic ", user_name );
        } catch(e) {}
        return true;
    } else {
        return false;
    }
}

function callback(mutationsList, observer) {
    if (mutationsList[0].type === 'attributes') {
        console.log('Focus hover changes, recall loadFocus function');
    } else if (mutationsList[0].type === 'childList') {
        console.log('Current Focus-topic number changes, recall loadFocus function');
    }
    loadFocus();
}

var mutationObserverL = new MutationObserver(callback);
var mutationObserverF = new MutationObserver(callback);

function focusHoverMO() {
    console.log('Run function focusHoverMO');
    mutationObserverL.observe(
        document.querySelector('.focus-board-area'), 
        {attributes: true, subtree: true}
    )
}

function focusTopicAreaMO() {
    console.log('Run function focusTopicAreaMO');
    mutationObserverF.observe(
        document.querySelector('.focus-topic-topicArea'), 
        {childList: true}
    )
}

waitForKeyElements("#1", loadReply);
waitForKeyElements("#hot_0", loadHot);
// waitForKeyElements(".focus-topic-topicArea", loadFocus);
waitForKeyElements(".focus-board-area", focusHoverMO);
waitForKeyElements(".focus-topic-topicArea", focusTopicAreaMO);


let endtime=new Date();
console.log ("==> Script end.", endtime );
console.log("script load in", endtime.getTime()-starttime.getTime(), "ms");