您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Removes any blurring from Grok's AI when generating an image. More precisely, it permanently removes all instances of "filter: blur(70px) contrast(2);" applied to page elements.
// ==UserScript== // @name Anti-Blur for Grok AI's Image Generator // @name:fr Anti-Flou pour le Générateur d'Image de l'IA de Grok // @namespace Violentmonkey Scripts // @match https://grok.com/ // @license MIT License // @grant none // @version 1.0 // @author AntoineGenvintroy // @description:en Removes any blurring from Grok's AI when generating an image. More precisely, it permanently removes all instances of "filter: blur(70px) contrast(2);" applied to page elements. // @description:fr Supprime tout flou causé par l'IA de Grok lors de la génération d'une image. Plus précisément, supprime définitivement toutes les instances de « filter: blur(70px) contrast(2); » appliquées aux éléments de la page. // @icon https://www.google.com/s2/favicons?domain=grok.com // @description Removes any blurring from Grok's AI when generating an image. More precisely, it permanently removes all instances of "filter: blur(70px) contrast(2);" applied to page elements. // ==/UserScript== // Function to clean an element of this specific filter function removeSpecificFilter(el) { const computed = window.getComputedStyle(el); if (computed.filter === 'blur(70px) contrast(2)') { el.style.filter = 'none'; } // Sometimes the filter is defined inline (in style), so we can also remove it directly if detected if (el.style && el.style.filter === 'blur(70px) contrast(2)') { el.style.filter = 'none'; } } // Recursive function to process the entire DOM function cleanAllElements() { document.querySelectorAll('*').forEach(removeSpecificFilter); } // Observe changes in the DOM const observer = new MutationObserver((mutations) => { for (const mutation of mutations) { if (mutation.type === 'attributes' && mutation.attributeName === 'style') { removeSpecificFilter(mutation.target); } if (mutation.type === 'childList') { mutation.addedNodes.forEach(node => { if (node.nodeType === 1) { // élément HTML removeSpecificFilter(node); node.querySelectorAll('*').forEach(removeSpecificFilter); } }); } } }); // Observation options observer.observe(document.documentElement, { attributes: true, subtree: true, childList: true, attributeFilter: ['style'] }); // Initial cleaning cleanAllElements(); // Optional: cleaning every 500ms in addition to observing it (reinforcement) setInterval(cleanAllElements, 500);