您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Change KoGaMa avatar with a custom image from file input (supports SVG structure and persists across refreshes)
- // ==UserScript== K O K U S H I B O
- // @name KoGaMa Avatar Change with Custom Image (Persistent)
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description Change KoGaMa avatar with a custom image from file input (supports SVG structure and persists across refreshes)
- // @author K O K U S H I B O
- // @match https://www.kogama.com/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // Function to create the avatar change panel
- function createAvatarChangePanel() {
- // Check if the panel already exists
- if (document.getElementById('avatarChangePanel')) return;
- // Create the panel element
- const panel = document.createElement('div');
- panel.id = 'avatarChangePanel';
- panel.style.position = 'fixed';
- panel.style.top = '20px';
- panel.style.right = '20px';
- panel.style.backgroundColor = '#ffffff';
- panel.style.border = '1px solid #ccc';
- panel.style.padding = '20px';
- panel.style.boxShadow = '0 4px 6px rgba(0,0,0,0.2)';
- panel.style.zIndex = '9999';
- panel.style.fontFamily = 'Arial, sans-serif';
- panel.style.width = '250px';
- panel.style.borderRadius = '5px';
- // Title of the panel
- const title = document.createElement('h3');
- title.innerText = 'Change Avatar';
- title.style.marginBottom = '10px';
- panel.appendChild(title);
- // Add the file input element inside the panel
- const input = document.createElement('input');
- input.type = 'file';
- input.accept = 'image/*'; // Only accept images
- input.id = 'avatarUploadInput';
- input.style.marginBottom = '10px';
- input.style.display = 'block';
- // Add a label for the input
- const label = document.createElement('label');
- label.innerText = 'Upload Custom Avatar';
- label.style.color = '#007bff';
- label.style.textDecoration = 'underline';
- label.style.cursor = 'pointer';
- label.setAttribute('for', 'avatarUploadInput');
- // Append input and label to the panel
- panel.appendChild(label);
- panel.appendChild(input);
- document.body.appendChild(panel);
- // Add an event listener for file input change
- input.addEventListener('change', function(event) {
- const file = event.target.files[0];
- if (file) {
- const reader = new FileReader();
- reader.onload = function(e) {
- // Find the SVG element and locate the <image> element within it
- const avatarSvg = document.querySelector('div._2bUqU svg');
- const avatarImage = avatarSvg ? avatarSvg.querySelector('image._3tYRU') : null;
- console.log("Avatar element found:", avatarImage);
- if (avatarImage) {
- // Change the avatar image source to the selected file
- avatarImage.setAttribute('xlink:href', e.target.result);
- console.log("Avatar updated with new image source:", e.target.result);
- // Save the new avatar image in localStorage
- localStorage.setItem('kogama_avatar', e.target.result);
- alert("Avatar updated successfully!");
- } else {
- console.log("Avatar image not found! Please check the page structure.");
- alert("Avatar element not found! Please check the page structure.");
- }
- };
- reader.onerror = function() {
- alert("Failed to read the file. Please try again.");
- };
- reader.readAsDataURL(file); // Read the file as a data URL
- }
- });
- }
- // Function to restore the avatar image from localStorage
- function restoreAvatar() {
- const storedAvatar = localStorage.getItem('kogama_avatar');
- if (storedAvatar) {
- const avatarSvg = document.querySelector('div._2bUqU svg');
- const avatarImage = avatarSvg ? avatarSvg.querySelector('image._3tYRU') : null;
- if (avatarImage) {
- avatarImage.setAttribute('xlink:href', storedAvatar);
- console.log("Restored avatar from localStorage:", storedAvatar);
- }
- }
- }
- // Wait for the page to fully load and display the panel
- window.addEventListener('load', function() {
- createAvatarChangePanel();
- restoreAvatar(); // Restore the avatar from localStorage if it exists
- });
- })();