您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Quickly identify the sender of email messages in Gmail without opening the message. Now marks emails in red if the domain is not allowed.
当前为
// ==UserScript== // @name Gmail Sender Icons // @name:es Gmail Iconos de Remitente // @namespace http://tampermonkey.net/ // @version 1.4 // @description Quickly identify the sender of email messages in Gmail without opening the message. Now marks emails in red if the domain is not allowed. // @description:es Identifica rápidamente al remitente de los mensajes de correo en Gmail sin abrir el mensaje. Ahora marca los correos en rojo si el dominio no está permitido. // @author IgnaV // @match https://mail.google.com/* // @icon https://ssl.gstatic.com/ui/v1/icons/mail/rfr/gmail.ico // @license MIT // @grant GM_setValue // @grant GM_getValue // ==/UserScript== (function() { 'use strict'; if (window.self !== window.top) return; const userId = window.location.href.match(/\/u\/(\d+)\//)[1]; const addIcon = GM_getValue('addIcon', true); const addDomain = GM_getValue('addDomain', true); const allowedCommonDomains = GM_getValue('allowedDomains', []); const allowedUserDomains = GM_getValue('allowedUserDomains', {}); const userDomains = allowedUserDomains[userId] || []; allowedUserDomains[userId] = userDomains; GM_setValue('addIcon', addIcon); GM_setValue('addDomain', addDomain); GM_setValue('allowedUserDomains', allowedUserDomains); const allowedDomains = allowedCommonDomains.concat(userDomains); const hasDomains = allowedDomains.length !== 0; if (!addIcon && !addDomain && !hasDomains) return; const processedElements = new Set(); function addDomainContainer(element, domain) { const domainContainer = document.createElement('div'); domainContainer.className = 'domain-container'; addIconToContainer(domainContainer, domain); addDomainToContainer(domainContainer, domain); element.appendChild(domainContainer); return domainContainer; } function addIconToContainer(domainContainer, domain) { const icon = document.createElement('img'); icon.src = `https://www.google.com/s2/favicons?domain=${domain}`; icon.className = 'domain-icon'; domainContainer.appendChild(icon); } function addDomainToContainer(domainContainer, domain) { const domainSpan = document.createElement('span'); domainSpan.className = 'domain-text'; domainSpan.textContent = domain; domainContainer.appendChild(domainSpan); } function markUnknownDomain(domainElement, domain) { if (!allowedDomains.includes(domain)) { domainElement.classList.add('not-allowed-domain'); } } function markUnknownEmail(emailElement, email) { const domain = extractDomain(email); if (!allowedDomains.includes(domain)) { emailElement.classList.add('not-allowed-domain'); } } function extractDomain(email) { const domainParts = email.split('@')[1].split('.'); if (domainParts[domainParts.length - 2] === 'com') { return domainParts.slice(-3).join('.'); } return domainParts.slice(-2).join('.'); } if (!addIcon && !addDomain) { addDomainContainer = function() {}; } if (!addIcon) { addIconToContainer = function() {}; } if (!addDomain) { addDomainToContainer = function() {}; } if (!hasDomains) { markUnknownDomain = function() {}; markUnknownEmail = function() {}; } function addStyles(addIcon, addDomain, hasDomains) { const style = document.createElement('style'); style.type = 'text/css'; let css = ``; if (addIcon || addDomain) { css += ` .bA4 { padding-top: 9px; } .domain-container { display: flex; align-items: center; margin-top: -4px; font-size: 10px; color: #888; width: fit-content; height: 11px; padding: 1px 2px; } `; } if (addIcon) { css += ` .domain-icon { width: 10px; height: 10px; margin-right: 3px; } `; } if (addDomain) { css += ` .domain-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 10px; color: #888; } `; } if (hasDomains) { css += ` .not-allowed-domain { background-color: #f8d7da; color: #721c24; border-radius: 3px; } `; } style.appendChild(document.createTextNode(css)); document.head.appendChild(style); } function addDomainBelowName() { const nameElements = document.querySelectorAll('.bA4'); nameElements.forEach((element) => { if (processedElements.has(element)) return; const emailElement = element.querySelector('[email]'); if (!emailElement) return; const email = emailElement.getAttribute('email'); const domain = extractDomain(email); const domainElement = addDomainContainer(element, domain); markUnknownDomain(domainElement, domain); processedElements.add(element); }); } function markEmailInOpenedMessage() { const containerElement = document.querySelector('h3:has(> span > .gD[email])'); const emailElement = containerElement ? containerElement.querySelector('.gD[email]') : null; if (emailElement) { const email = emailElement.getAttribute('email'); markUnknownEmail(containerElement, email); } } addStyles(addIcon, addDomain, hasDomains); const observer = new MutationObserver((mutations) => { mutations.forEach(() => { addDomainBelowName(); markEmailInOpenedMessage(); }); }); observer.observe(document.body, { childList: true, subtree: true }); window.addEventListener('load', () => { addDomainBelowName(); markEmailInOpenedMessage(); }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址