您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Blurs images on 4chan. Catalog view - double click image to unblur and open the thread. Thread view - click image to unblur, click again to reapply blur.
当前为
- // ==UserScript==
- // @name 4chan Image Blur Toggle
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description Blurs images on 4chan. Catalog view - double click image to unblur and open the thread. Thread view - click image to unblur, click again to reapply blur.
- // @author Trojihn
- // @license MIT
- // @match *://boards.4chan.org/*
- // @grant none
- // @icon https://s.4cdn.org/image/favicon.ico
- // ==/UserScript==
- (function() {
- 'use strict'; // Use strict mode to enforce cleaner JavaScript
- // Function to apply blur and toggle on click for images
- function applyBlur(img) {
- img.style.filter = 'blur(15px)'; // Apply a 15px blur effect to the image
- img.style.transition = 'filter 0.2s'; // Add a transition for smooth unblurring
- let isBlurred = true; // Track the blur state
- // Add a click event listener to the image
- img.addEventListener('click', event => {
- event.preventDefault(); // Prevent the default action (navigating to the link) immediately
- // Check if the image is currently blurred
- if (isBlurred) {
- img.style.filter = 'none'; // Unblur the image
- isBlurred = false; // Update the state to indicate the image is now unblurred
- } else {
- // If the image is unblurred and clicked again, check if we are in thread view
- const isThreadView = img.closest('.fileThumb'); // Check if the image is in thread view
- if (isThreadView) {
- img.style.filter = 'blur(15px)'; // Reapply the blur effect
- isBlurred = true; // Update the state to indicate the image is now blurred
- } else {
- // If in catalog view, allow navigation
- const link = img.closest('a'); // Find the closest anchor tag (link) around the image
- if (link) {
- window.location.href = link.href; // Navigate to the thread URL found in the link's href attribute
- }
- }
- }
- });
- }
- // Function to apply blur to images in both thread and catalog views
- function blurAllImages() {
- // Select all images in thread view
- const threadImages = document.querySelectorAll('.fileThumb img');
- // Select all images in catalog view using the class "thumb"
- const catalogImages = document.querySelectorAll('.thumb');
- // Apply the blur effect to all selected images
- [...threadImages, ...catalogImages].forEach(applyBlur);
- }
- // Call the function to apply blur to images initially
- blurAllImages();
- // Create a MutationObserver to watch for new images added to the page dynamically
- const observer = new MutationObserver(mutations => {
- // Iterate through each mutation (change) detected
- mutations.forEach(mutation => {
- // For each added node in the mutation
- mutation.addedNodes.forEach(node => {
- // Check if the added node is an element node and matches the image selectors
- if (
- node.nodeType === 1 && // Ensure it's an element node
- (node.matches('.fileThumb img') || node.matches('.thumb')) // Match either thread or catalog images
- ) {
- applyBlur(node); // Apply the blur effect to the new image
- }
- });
- });
- });
- // Start observing the document body for changes in its child nodes
- observer.observe(document.body, { childList: true, subtree: true });
- })();