您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A userscript to show only NSFW entries on the Reddit search page
当前为
// ==UserScript== // @name Reddit NSFW Filter // @namespace Reddit-NSFW-Filter // @version 1.0 // @description A userscript to show only NSFW entries on the Reddit search page // @author Mortality577 // @license MIT // @match *://*.reddit.com/search/* // @grant none // ==/UserScript== (() => { 'use strict'; // Array of selectors to identify NSFW content const nsfwSelectors = [ '.text-category-nsfw', // Text tag for NSFW 'svg[icon-name="nsfw-fill"]', // SVG icon for NSFW '[data-faceplate-tracking-context*="\"nsfw\":true"]' // JSON data indicating NSFW ]; // Function to check if an element or its children contains an NSFW tag const containsNSFWTag = (element) => nsfwSelectors.some(selector => { try { return element.querySelector(selector); } catch (e) { console.error(`Error querying selector ${selector}:`, e); return false; // If an error occurs, assume the selector isn't valid } }); // Function to filter NSFW entries const filterNSFW = () => { document .querySelectorAll('faceplate-tracker[data-testid="search-community"]') .forEach(entry => { entry.style.display = containsNSFWTag(entry) ? '' : 'none'; // Show only NSFW }); }; // Utility function for debouncing the filter function const debounce = (func, wait) => { let timeout; return (...args) => { clearTimeout(timeout); timeout = setTimeout(() => func.apply(this, args), wait); }; }; // Initial filtering on page load filterNSFW(); // Mutation observer to run the filter function when new content is added const observer = new MutationObserver(debounce(filterNSFW, 300)); // Debounce to avoid excessive calls observer.observe(document.body, { childList: true, subtree: true }); // Watch for changes in the entire document })();