new script

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

Versione datata 17/11/2021. Vedi la nuova versione l'ultima versione.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

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

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==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");