您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a compact, styled footer with user profile links and tooltips on IMVU badge pages.
// ==UserScript== // @name IMVU Badge Footer // @namespace https://www.imvu.com/ // @version 1.1 // @description Adds a compact, styled footer with user profile links and tooltips on IMVU badge pages. // @match *://userimages*.imvu.com/userdata/*/badge_* // @author heapsofjoy // @grant none // @run-at document-end // ==/UserScript== (function () { 'use strict'; // Extract CID from the badge URL const urlParts = window.location.pathname.split('/'); if (urlParts.length < 3) return; const userCID = urlParts[2]; // Inject CSS styles const style = document.createElement('style'); style.textContent = ` footer { position: fixed; bottom: 0; left: 0; width: 100%; background: rgba(0, 0, 0, 0.5); color: rgba(255, 255, 255, 0.8); text-align: center; padding: 4px 0; font-size: 0.95em; font-family: Arial, sans-serif; z-index: 4; } footer a { color: rgba(100, 165, 165, 0.8); text-decoration: none; } footer a:hover { text-decoration: underline; } .tooltip { position: relative; cursor: pointer; } .tooltip-text { visibility: hidden; background-color: rgba(0, 0, 0, 0.75); color: #fff; text-align: center; border-radius: 4px; padding: 5px; position: absolute; z-index: 10; bottom: 125%; left: 50%; transform: translateX(-50%); opacity: 0; transition: opacity 0.3s; width: 220px; font-size: 0.85em; } .tooltip:hover .tooltip-text { visibility: visible; opacity: 1; } `; document.head.appendChild(style); // Create footer element const footer = document.createElement("footer"); footer.innerHTML = `<span>Fetching badge owner...</span>`; document.body.appendChild(footer); // Fetch username and update footer async function fetchIMVUProfile(cid) { let username = "User Not Found"; let tooltipText = "This user may be disabled or deleted. Click the shop icon to check."; try { const response = await fetch(`https://api.imvu.com/user/user-${cid}`); const data = await response.json(); const userData = data.denormalized[`https://api.imvu.com/user/user-${cid}`]; if (userData && userData.data.username) { username = userData.data.username; tooltipText = ""; // No tooltip if user exists } } catch (error) { console.warn("Failed to fetch IMVU profile, defaulting to 'User Not Found'.", error); } // Profile and shop links const homepageUrl = `https://www.imvu.com/catalog/web_mypage.php?user=${cid}`; const shopUrl = `https://www.imvu.com/shop/web_search.php?manufacturers_id=${cid}`; // Update footer with available data footer.innerHTML = ` <span>Badge owned by: <span class="tooltip"><strong>${username}</strong> ${tooltipText ? `<span class="tooltip-text">${tooltipText}</span>` : ""} </span> </span> | <a href="${homepageUrl}" target="_blank">🏠 Profile</a> | <a href="${shopUrl}" target="_blank">🛍️ Shop</a> `; } // Call function to get profile data fetchIMVUProfile(userCID); })();