您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
隐藏 X.com 私信列表。鼠标悬停在区域上时,所有对话会清晰显示。此版本极其稳定,并支持多语言。
// ==UserScript== // @name X.com 私信列表模糊处理 // @name:en X.com DM Blur // @namespace http://tampermonkey.net/ // @version 1.3 // @description 隐藏 X.com 私信列表。鼠标悬停在区域上时,所有对话会清晰显示。此版本极其稳定,并支持多语言。 // @description:en Reliably hides the DM list on X.com by blurring the entire conversations section. The section becomes clear on hover. This version is extremely stable and supports multiple languages. // @author BlingCc // @match https://x.com/* // @match https://x.com/messages/* // @match https://x.com/messages // @icon https://www.google.com/s2/favicons?sz=64&domain=x.com // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // --- 1. 注入CSS样式 (Inject CSS Styles) --- // 定义一个作用于整个容器的模糊类。这部分设计得很好,无需改动。 const style = document.createElement('style'); style.textContent = ` /* 模糊容器的样式 */ .dm-blur-section-container { /* 核心模糊效果 */ filter: blur(5px); /* 平滑过渡动画 */ transition: filter 0.2s ease-in-out; /* 解决边缘模糊不清晰的问题 */ padding-top: 5px; margin-top: -5px; } /* 鼠标悬停在容器上时,移除模糊 */ .dm-blur-section-container:hover { filter: blur(0); } `; document.head.appendChild(style); // --- 2. 核心处理函数 (Core Processing Function) --- // 这个函数负责找到目标元素并应用模糊效果。 function processAndBlur() { // 【关键优化】使用 XPath 同时查找中文“所有对话”和英文“All conversations”。 // This makes the script work regardless of the user's UI language. const headingXpath = "//h2[.//span[contains(text(), '所有对话') or contains(text(), 'All conversations')]]"; const heading = document.evaluate(headingXpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; // 如果没有找到标题,说明元素还未加载,直接返回。 if (!heading) { return; } // 找到标题后,向上追溯找到它所属的 <section> 容器。 const conversationSection = heading.closest('section'); if (!conversationSection) { return; } // 检查这个 section 是否已经被处理过,避免重复添加类。 if (!conversationSection.classList.contains('dm-blur-section-container')) { console.log('Tampermonkey: 找到了私信列表区域,正在应用模糊效果。'); // 将我们定义好的CSS类添加到这个区域上。 conversationSection.classList.add('dm-blur-section-container'); } } // --- 3. 监听动态加载 (Listen for Dynamic Content) --- // 这就是实现“监听动态加载”的核心。 // X.com 是一个单页应用(SPA),内容是通过 JavaScript 动态添加到页面上的,而不是通过传统的页面刷新。 // MutationObserver 是一个现代浏览器API,它能高效地监视DOM树的变化(例如,元素的添加或删除)。 console.log('Tampermonkey: X.com DM 模糊脚本已启动,正在监听页面变化...'); const observer = new MutationObserver((mutations) => { // 当页面有任何变动时,这个回调函数就会被触发。 // 我们不需要关心具体的变动内容(mutations),只需要再次运行我们的检查函数即可。 processAndBlur(); }); // --- 4. 启动监控 (Start Observing) --- // 我们告诉 observer 去监控整个 `document.body`。 // `childList: true` 表示我们关心子节点的增加或删除。 // `subtree: true` 表示我们关心所有后代节点的变化,而不仅仅是直接子节点。 // 这个配置确保了无论私信列表在哪里、在什么时候被加载进来,我们都能捕捉到这个变化。 observer.observe(document.body, { childList: true, subtree: true }); // --- 5. 初始执行 (Initial Execution) --- // 为了应对脚本加载时目标元素可能已经存在的情况,我们先立即执行一次。 // 然后再设置一个短暂的延时再次执行,作为双重保险,应对那些在初始渲染中稍晚出现的元素。 // 之后的所有动态加载,都将由上面的 MutationObserver 来处理。 processAndBlur(); setTimeout(processAndBlur, 500); })();