您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try out extension on https://github.com/tkrclient/tkrclient ---------------------------- this script only works on the website "iogames.fun", allows for color picking, and reduction of spam messages by disallowing long string of text, and disallowing certain unicodes (not emojis)
// ==UserScript== // @name tkrclient // @version 1.46 // @author TKR MrGames // @match http*://*.iogames.fun/* // @locale en // @description try out extension on https://github.com/tkrclient/tkrclient ---------------------------- this script only works on the website "iogames.fun", allows for color picking, and reduction of spam messages by disallowing long string of text, and disallowing certain unicodes (not emojis) // @license MIT // @namespace script727288273783 // ==/UserScript== (function() { /*---- Delete all script tags ----*/ var scriptTags = document.querySelectorAll('script'); scriptTags.forEach(function(scriptTag) { if (scriptTag.parentNode) { scriptTag.parentNode.removeChild(scriptTag); } }); /*---- Html editing for lightweight page ----*/ // Remove ALL CSS /*const header = document.querySelector('head'); { header?.remove() }*/ // Remove the games on main page const mainpage = document.querySelector('main'); { mainpage?.remove() } // Remove the bottom text on main page const mainpage2 = document.querySelector('.main'); { mainpage2?.remove() } // Remove the side bar const asidepage = document.querySelector('aside'); { asidepage?.remove() } // Remove the navigation bar (navbar) /*const navpage = document.querySelector('nav'); { navpage?.remove() }*/ // Remove sign-in const logon = document.getElementById('signin-widget'); { logon?.remove() } // Remove website Logo const logo = document.querySelector(".logo"); { logo?.remove() } // Remove languages on navbar const lang = document.querySelector(".lang"); { lang?.remove() } // Remove search bar on navbar const search = document.querySelector(".margin"); { search?.remove() } // Remove chat messages /*const chats = document.getElementById('messages'); { chats?.remove() }*/ /*---- Move chat box upwards ----*/ var bodycon = document.querySelector('body'); var append = document.querySelector('.chat-send'); var prepend = document.querySelector('#messages'); /*---- Higher char limits ----*/ // Higher character limit for chat box const messageInput = document.getElementById('message'); { messageInput.setAttribute('maxlength', '1000'); // 400 character limit } // Higher character limit for name box const nameInput = document.getElementById('name'); { nameInput.setAttribute('maxlength', '1000'); // 400 character limit } /*---- CSS customizations ----*/ // Create a new style element var styleElement = document.createElement('style'); // Define the CSS rules you want to apply var cssRules = ` .sendUp { grid-template-areas: "nav nav nav " "sidebar main name " "sidebar main messages " "sidebar main send " } body .styleMessage { grid-area: messages; background-color: rgba(255,255,255,0.05); box-sizing: border-box; display: flex; flex-direction: column-reverse; padding: 0.5rem; overflow-wrap: normal; border-left: 1px solid rgba(0,0,0,0.25); overflow-y: scroll; scrollbar-color: transparent rgba(255,255,255,0.05); scrollbar-width: none } body .styleMessage .entry { margin-top:1rem } body .styleMessage .entry a, body .styleMessage .entry a:visited { display:inline-block; vertical-align:middle } body .styleMessage .entry a:hover img, body .styleMessage .entry a:visited:hover img { opacity:1 } body .styleMessage .entry a img, body .styleMessage .entry a:visited img { opacity:0.5; margin-left:0.5rem } body .styleMessage .entry .time, body .styleMessage .entry .name { font-size:0.9rem } body .styleMessage .entry .time { opacity:0.5 } body .styleMessage .entry .system { color:#3f0; font-weight:bold; text-shadow:0 0 0.5rem #3f0 } `; // Set the CSS rules as the content of the style element styleElement.innerHTML = cssRules; // Append the style element to the document head document.head.appendChild(styleElement); // Add the new class to the element bodycon.classList.add('sendUp'); // Add class styleMessage to Message element prepend.classList.remove('chat-messages'); prepend.classList.add('styleMessage'); /*---- Name color changes ----*/ var namecolor = document.getElementById('colorpicker'); // Function (for some reason only loads after few seconds) function func() { namecolor.style.removeProperty('all'); namecolor.style.color = 'rgb(255, 0, 0)'; // CHANGE COLOR HERE! <--------------------------- } setTimeout(func, 3000); /*---- Debloating html ----*/ // Function (for some reason only loads after few seconds) function debloat() { const fbroot = document.getElementById('fb-root'); { fbroot?.remove() } const iframetag = document.querySelector('iframe'); { iframetag?.remove() } } setTimeout(debloat, 3000); /*---- Removing Unicode ----*/ // Function (for some reason only loads after few seconds) function removeUnicodeFromElements() { console.log('Removing Unicode from elements...'); // Get all the ".message" elements nested under the ".entry" class and "#messages" parent const messageElements = document.querySelectorAll('#messages .entry .message'); messageElements.forEach(element => { // use /[^\u0000-\u007F]/g for ALL unicode characters (including emojies)! element.textContent = element.textContent.replace(/[^\u0000-\u007F\u{1F600}-\u{1F64F}\u{1F300}-\u{1F5FF}\u{1F680}-\u{1F6FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}\u{1F900}-\u{1F9FF}\u{1F500}-\u{1F5FF}\u{1F600}-\u{1F64F}\u{1F300}-\u{1F5FF}\u{1F680}-\u{1F6FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}]/gu, ''); }); // Get all the ".name" elements nested under the ".entry" class and "#messages" parent const nameElements = document.querySelectorAll('#messages .entry .name'); nameElements.forEach(element => { // use /[^\u0000-\u007F]/g for ALL unicode characters (including emojies)! element.textContent = element.textContent.replace(/[^\u0000-\u007F\u{1F600}-\u{1F64F}\u{1F300}-\u{1F5FF}\u{1F680}-\u{1F6FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}\u{1F900}-\u{1F9FF}\u{1F500}-\u{1F5FF}\u{1F600}-\u{1F64F}\u{1F300}-\u{1F5FF}\u{1F680}-\u{1F6FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}]/gu, ''); }); } // Run the function to remove Unicode characters after a 3-second delay setTimeout(removeUnicodeFromElements, 3000); // Set up a mutation observer to watch for new elements const observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.type === 'childList') { console.log('New elements added, running Unicode removal...'); removeUnicodeFromElements(); } }); }); // Start observing the "#messages" element for changes after a 3-second delay setTimeout(function() { observer.observe(document.getElementById('messages'), { childList: true }); }, 3000); /* Keybindings for [ ] and \ to change colors */ // Listen for the 'keypress' event on the document document.addEventListener('keypress', function(event) { // Check if the pressed key is the 'Enter' key function red() { namecolor.style.removeProperty('all'); namecolor.style.color = 'rgb(255, 0, 0)'; // red } function green() { namecolor.style.removeProperty('all'); namecolor.style.color = 'rgb(0, 255, 0)'; // green } function blue() { namecolor.style.removeProperty('all'); namecolor.style.color = 'rgb(0, 0, 255)'; // blue } if (event.key === '[') { // [ // Call the function you want to activate red(); } if (event.key === ']') { // ] // Call the function you want to activate green(); } if (event.key === '\\') { // \ // Call the function you want to activate blue(); } }); })();