您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds RGB animation to text while typing
当前为
// ==UserScript== // @name RGB Text Animation // @namespace http://tampermonkey.net/ // @version 1.0 // @description Adds RGB animation to text while typing // @author Jyomama28 // @match *://*/* // @grant none // ==/UserScript== (function() { 'use strict'; // Create style element for the animation const style = document.createElement('style'); style.innerHTML = ` @keyframes rgbText { 0% { color: rgb(255, 0, 0); } 33% { color: rgb(0, 255, 0); } 66% { color: rgb(0, 0, 255); } 100% { color: rgb(255, 0, 0); } } .rgb-animated { animation: rgbText 3s linear infinite; } `; document.head.appendChild(style); // Function to handle input events function handleInput(event) { const element = event.target; // Check if the element is a text input or contenteditable if ( element.tagName === 'INPUT' || element.tagName === 'TEXTAREA' || element.getAttribute('contenteditable') === 'true' ) { // Add the RGB animation class element.classList.add('rgb-animated'); // Also animate the text content if (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA') { element.style.animation = 'rgbText 3s linear infinite'; } } } // Monitor for new elements being added to the page const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { mutation.addedNodes.forEach((node) => { if (node.nodeType === 1) { // Element node const inputs = node.querySelectorAll('input, textarea, [contenteditable="true"]'); inputs.forEach(input => { input.addEventListener('input', handleInput); }); } }); }); }); // Start observing the document observer.observe(document.body, { childList: true, subtree: true }); // Add event listeners to existing input elements document.querySelectorAll('input, textarea, [contenteditable="true"]').forEach(input => { input.addEventListener('input', handleInput); }); })();