您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
block the user you don't want to see his reply.
当前为
// ==UserScript== // @name CC98 Block // @namespace http://tampermonkey.net/ // @version 0.4 // @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 // @match *://www.cc98.org/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @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 ); var ban_user_list = new Array(); var ban_topic_list = new Array(); if (localStorage.ban_user_list) { ban_user_list = JSON.parse(localStorage.ban_user_list); } if (localStorage.ban_topic_list) { ban_topic_list = JSON.parse(localStorage.ban_topic_list); } // 添加拉黑按钮 function addUserBtn(commentlike, user_message) { var 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_message = user_message; commentlike.appendChild(b); } function addTopicBtn(focus_topic) { var span = document.createElement('span'); span.innerText = '屏蔽'; // b.style.cssText = 'width: 25%;height: 25%; text-align: center; vertical-align:bottom; margin-left: 8px'; span.addEventListener('click', banTopic); span.style.cssText = 'width: 40px'; span.focus_topic = focus_topic; var focus_topic_info = focus_topic.querySelector('.focus-topic-info'); focus_topic_info.insertBefore(span, focus_topic_info.firstChild); } function loadFocus() { var focus_topics = document.querySelectorAll('.focus-topic'); // console.log('[loadFocus]: ', user_messages); focus_topics.forEach( function(el) { //var user_message = el.querySelector('.focus-topic-userName'); //console.log('[LoadFocus] current topic user name: ', el.textContent); if (el) { if (removeTopic(el) == false) { addTopicBtn(el); } } } ); } function loadMoreTopic(mutationsList) { for (const mutation of mutationsList) { var focus_topic = mutation.addedNodes[0]; // console.log('[loadMoreTopic] user name: ', user_name); if (focus_topic) { if (removeTopic(focus_topic) == false) { addTopicBtn(focus_topic); } } } } // 删除当前回复 function removeReply(user_message) { var user_name = user_message.text; if (ban_user_list.includes(user_name)) { try { // user_message.offsetParent.remove(); // user_message.offsetParent.style.visibility = "hidden"; user_message.offsetParent.style.display = "none"; console.log ("==> Hidden user's reply ", user_name ); } catch (e) {} return true; } return false; } function banTopic(event) { var r = window.confirm('确认屏蔽此贴?'); if (r) { var topic = event.currentTarget.focus_topic.querySelector('.focus-topic-title').getAttribute('href').slice(7,-2); if (!ban_topic_list.includes(topic)) { ban_topic_list.push(topic); localStorage.ban_topic_list = JSON.stringify(ban_topic_list); } removeTopic(event.currentTarget.focus_topic); } } function banUser(event) { var r = window.confirm('确认拉黑此用户?'); if (r) { var user_name = event.currentTarget.user_message.text; if (!ban_user_list.includes(user_name)) { ban_user_list.push(user_name); localStorage.ban_user_list = JSON.stringify(ban_user_list); } 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(focus_topic) { var user_name = focus_topic.querySelector('.focus-topic-userName').textContent; var topic_href = focus_topic.querySelector('.focus-topic-title').getAttribute('href').slice(7, -2); if (ban_user_list.includes(user_name) || ban_topic_list.includes(topic_href)) { try { focus_topic.style.display = "none"; console.log ("==> Rmove user's topic ", user_name, topic_href ); } catch(e) {} return true; } else { if (focus_topic.style.display == "none") { focus_topic.style.display = ""; } return false; } } function removeTopicByUser(user_message) { var user_name = user_message.textContent; if (ban_user_list.includes(user_name)) { try { user_message.parentElement.parentElement.style.display = "none"; console.log ("==> Rmove user's topic ", user_name ); } catch(e) {} return true; } else { if (user_message.parentElement.parentElement.style.display == "none") { user_message.parentElement.parentElement.style.display = ""; } return false; } } // sleep time expects milliseconds function sleep (time) { return new Promise((resolve) => setTimeout(resolve, time)); } function callback(mutationsList, observer) { // console.log(mutationsList); if (mutationsList[0].type === 'attributes') { observer.disconnect(); observer.observe( document.querySelector('.focus-topic-title'), {attributes: true} ); console.log('[callback from mutationObserverL] Focus hover changes, mutationObserverF oberserver changes.'); loadFocus(); } else if (mutationsList[0].type === 'childList') { if (mutationsList[0].removedNodes.length > 0) { console.log('[callback from mutationObserverF] Current Focus-topic number changes according to focus hover changes'); return; } else { console.log('[callback from mutationObserverF] Current Focus-topic number changes'); loadMoreTopic(mutationsList); } } } var mutationObserverL = new MutationObserver(callback); var mutationObserverF = new MutationObserver(callback); function focusHoverMO() { console.log('Run function focusHoverMO'); mutationObserverL.disconnect(); var intv = setInterval(function() { var topic_title = document.querySelector('.focus-topic-title'); if (topic_title == null) { return false; } //when element is found, clear the interval. clearInterval(intv); mutationObserverL.observe( topic_title, {attributes: true} ) }, 10); // mutationObserverL.observe( // document.querySelector('.focus-topic-title'), // {attributes: true} // ) } function focusTopicAreaMO() { loadFocus(); console.log('Run function focusTopicAreaMO'); mutationObserverF.disconnect(); 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");