您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
为大屏优化Twitter阅读体验:宽屏布局、自动展开、字体美化、简化界面 (隐藏曝光量、转发数等干扰信息)
// ==UserScript== // @name Twitter Minimal 阅读优化、去除干扰 // @author Efficient Lazy Panda // @description 为大屏优化Twitter阅读体验:宽屏布局、自动展开、字体美化、简化界面 (隐藏曝光量、转发数等干扰信息) // @version 1.2 // @namespace https://example.com/efficient-lazy-panda // @match https://twitter.com/* // @match https://x.com/* // @run-at document-start // @grant GM_addStyle // @license MIT // ==/UserScript== (function() { 'use strict'; // 添加自定义CSS样式 GM_addStyle(` /* 宽屏布局优化 - 响应式设计 */ [data-testid="primaryColumn"] { max-width: 1000px !important; } /* 推文内容区域扩展 */ article[data-testid="tweet"] { max-width: none !important; padding: 12px 24px !important; } /* 推文文本区域宽度 - 保守设置,保持响应式 */ [data-testid="tweetText"] { max-width: none !important; } /* 应用 iA Writer Mono S 字体 */ [data-testid="tweetText"], [data-testid="tweetText"] span, [data-testid="tweetText"] div { font-family: "iA Writer Mono S", "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace !important; font-size: 16px !important; line-height: 1.6 !important; letter-spacing: 0.3px !important; } /* 隐藏不需要的指标 */ [data-testid="analytics"], [data-testid="views"], [aria-label*="次查看"], [aria-label*="views"], [data-testid="share"], [aria-label*="分享"], [aria-label*="Share"] { display: none !important; } /* 按钮区域处理 - 保持原位置,只隐藏转发按钮 */ [data-testid="tweet"] [role="group"]:last-child { display: flex !important; justify-content: space-between !important; } /* 只隐藏转发按钮,保留like和bookmark */ [data-testid="retweet"], [data-testid="unretweet"] { display: none !important; } /* 确保like和bookmark按钮显示 */ [data-testid="like"], [data-testid="unlike"], [data-testid="bookmark"], [data-testid="removeBookmark"] { display: flex !important; } /* 自动展开的推文样式 */ [data-testid="tweetText"] > div { max-height: none !important; height: auto !important; overflow: visible !important; } /* 移除文本截断限制 */ [data-testid="tweetText"] div[style*="height"] { height: auto !important; max-height: none !important; } /* 确保长推文能够完全显示 */ [data-testid="tweet"] [dir="ltr"] { max-height: none !important; overflow: visible !important; } /* 确保媒体内容也适应宽屏 */ [data-testid="tweetPhoto"], [data-testid="videoPlayer"] { max-width: 100% !important; } /* 响应式设计 - 确保小屏幕正常显示 */ @media (max-width: 1000px) { [data-testid="primaryColumn"] { max-width: 100% !important; } article[data-testid="tweet"] { padding: 8px 16px !important; } } @media (max-width: 768px) { [data-testid="primaryColumn"] { max-width: 100% !important; } article[data-testid="tweet"] { padding: 6px 12px !important; } } `); // 自动展开"显示更多"功能 function autoExpandTweets() { try { // 查找特定的"显示更多"按钮 const showMoreButtons = document.querySelectorAll('[role="button"]:not([data-expanded])'); let expandedCount = 0; showMoreButtons.forEach(button => { if (expandedCount >= 5) return; // 限制每次最多处理5个 const text = button.textContent.trim(); if (text === '显示更多' || text === 'Show more' || text === '显示此线程' || text === 'Show this thread') { button.setAttribute('data-expanded', 'true'); expandedCount++; setTimeout(() => { try { button.click(); console.log('自动展开:', text); } catch (e) { console.log('展开失败:', e); } }, 300 * expandedCount); // 错开点击时间 } }); // 通过CSS移除高度限制 const tweets = document.querySelectorAll('[data-testid="tweet"]'); tweets.forEach(tweet => { const textElements = tweet.querySelectorAll('[data-testid="tweetText"] > div'); textElements.forEach(element => { if (element.style.height && element.style.height !== 'auto') { element.style.height = 'auto'; element.style.maxHeight = 'none'; } }); }); } catch (error) { console.log('自动展开出错:', error); } } // 不再重排按钮,保持原始位置确保可点击性 function initObserver() { const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { // 延迟执行以确保元素完全加载 setTimeout(() => { autoExpandTweets(); }, 200); } }); }); observer.observe(document.body, { childList: true, subtree: true }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => { setTimeout(() => { initObserver(); autoExpandTweets(); }, 1500); }); } else { setTimeout(() => { initObserver(); autoExpandTweets(); }, 1500); } setInterval(() => { autoExpandTweets(); }, 5000); // 改为5秒一次,减少性能影响 })();