Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name 4chan id blocker - 4chan.org
- // @namespace Violentmonkey Scripts
- // @match https://boards.4chan.org/*
- // @grant none
- // @version 1.0
- // @author -
- // @description -
- // ==/UserScript==
- var bannedIds = {};
- function hideElement(node) {
- node.style.display = "none";
- }
- function removePostFromIdNode(node) {
- var postNode = node.parentNode.parentNode.parentNode;
- var prevNode = postNode.previousSibling;
- hideElement(postNode);
- hideElement(prevNode);
- }
- function makeHideHandler(posterId) {
- return function() {
- var elts = document.getElementsByTagName("span");
- for (var i = 0; i < elts.length; i++) {
- var elt = elts[i];
- if (elt.getAttribute("class") != "posteruid id_" + posterId)
- continue;
- removePostFromIdNode(elt);
- }
- bannedIds[posterId] = 1;
- };
- }
- function hideBannedIds() {
- var elts = document.getElementsByTagName("span");
- for (var i = 0; i < elts.length; i++) {
- var elt = elts[i];
- var cls = elt.getAttribute("class");
- if (!cls) continue;
- if (cls.substring(0, 13) != "posteruid id_") continue;
- var posterId = cls.substring(13);
- if (bannedIds[posterId] == 1) {
- removePostFromIdNode(elt);
- }
- }
- }
- function addHideButtons() {
- var elts = document.getElementsByTagName("span");
- for (var i = 0; i < elts.length; i++) {
- var elt = elts[i];
- if (elt.getAttribute("class") != "hand" ||
- elt.getAttribute("title") != "Highlight posts by this ID" ||
- elt.getAttribute("data-has-block-button") == "true")
- continue;
- var xNode = document.createElement("span");
- xNode.textContent = "[x]";
- var handler = makeHideHandler(elt.textContent);
- xNode.addEventListener("click", handler);
- elt.parentNode.appendChild(xNode);
- elt.setAttribute("data-has-block-button", "true");
- }
- }
- var pageLoadDelay = 1000;
- function onUpdate() {
- hideBannedIds();
- addHideButtons();
- }
- function updateHandler() {
- setTimeout(onUpdate, pageLoadDelay);
- }
- function addUpdateButtonHook() {
- var elts = document.getElementsByTagName("a");
- for (var i = 0; i < elts.length; i++) {
- var elt = elts[i];
- if (elt.textContent != "Update") continue;
- elt.addEventListener("click", updateHandler);
- }
- }
- function pageLoop(timeout) {
- onUpdate();
- setTimeout(pageLoop, timeout);
- }
- addHideButtons();
- setTimeout(addUpdateButtonHook, pageLoadDelay);
- pageLoop(10000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement