您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Delete elements globally with persistence across different pages and sites.
// ==UserScript== // @name Global Element Deletion with Persistence // @namespace Fists // @version 1.7 // @description Delete elements globally with persistence across different pages and sites. // @author You // @license CC BY 4.0; https://creativecommons.org/licenses/by/4.0/ // @match *://*/* // @grant none // ==/UserScript== (function() { 'use strict'; const STORAGE_KEY = 'deletedElements_v1'; // Load stored selectors let deletedSelectors = JSON.parse(localStorage.getItem(STORAGE_KEY)) || []; // Function to delete elements by selector function deleteElementsBySelector(selector) { const elements = document.querySelectorAll(selector); elements.forEach(element => element.remove()); } // Function to store a new selector function storeSelector(selector) { if (!deletedSelectors.includes(selector)) { deletedSelectors.push(selector); localStorage.setItem(STORAGE_KEY, JSON.stringify(deletedSelectors)); } } // Function to handle element deletion function handleElementDeletion(element) { const selector = getUniqueSelector(element); if (selector) { element.remove(); storeSelector(selector); console.log('Element deleted and selector stored:', selector); } } // Function to get a unique selector for an element function getUniqueSelector(element) { if (element.id) { return `#${element.id}`; } else if (element.className) { return `.${element.className.trim().split(/\s+/).join('.')}`; } else { let path = []; while (element && element.nodeType === Node.ELEMENT_NODE) { let selector = element.nodeName.toLowerCase(); if (element.id) { selector += `#${element.id}`; path.unshift(selector); break; } else if (element.className) { selector += `.${element.className.trim().split(/\s+/).join('.')}`; } path.unshift(selector); element = element.parentNode; } return path.join(' > '); } } // Observer to watch for added nodes const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { mutation.addedNodes.forEach(node => { if (node.nodeType === Node.ELEMENT_NODE && Math.random() < 0.001) { // 0.1% chance handleElementDeletion(node); } }); }); }); // Start observing the document observer.observe(document.documentElement, { childList: true, subtree: true }); // Apply stored deletions on page load deletedSelectors.forEach(selector => deleteElementsBySelector(selector)); // Initial pass to delete existing elements document.querySelectorAll('*').forEach(element => { if (Math.random() < 0.001) { // 0.1% chance handleElementDeletion(element); } }); })();