Greasy Fork

Greasy Fork is available in English.

new script

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

当前为 2021-11-17 提交的版本,查看 最新版本

// ==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      http://greasyfork.icu/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");