// ==UserScript== // @name X(No_Media); // @namespace https://cdn.jsdelivr.net/gh/orangeZSCB/X-No-Media/MediaX.user.js // @version 0.2 // @description 自动为 X 的所有媒体内容添加模糊层 // @author Orange // @match https://x.com/* // @match https://twitter.com/* // @icon https://abs.twimg.com/favicons/twitter.3.ico // @grant none // @license GPL-v3 // @downloadURL https://update.greasyfork.icu/scripts/525991/X%28No_Media%29%3B.user.js // @updateURL https://update.greasyfork.icu/scripts/525991/X%28No_Media%29%3B.meta.js // ==/UserScript== (function() { 'use strict'; // 敏感内容警告层模板 const warningHTML = `
内容警告:敏感内容
帖子作者已将这个帖子标记为显示敏感内容。
`; function addWarningLayer(mediaContainer) { if (mediaContainer.querySelector('.r-drfeu3')) return; const warningLayer = document.createElement('div'); warningLayer.innerHTML = warningHTML; mediaContainer.prepend(warningLayer); const showButton = warningLayer.querySelector('button'); showButton.addEventListener('click', () => { warningLayer.remove(); mediaContainer.style.filter = 'none'; }); mediaContainer.style.filter = 'blur(50px)'; } function checkMediaContainers() { document.querySelectorAll([ 'div[data-testid="tweetPhoto"]', 'div[data-testid="videoPlayer"]' ].join(',')).forEach(media => { const container = media.closest('.r-1kqtdi0, .r-1udh08x'); if (container) addWarningLayer(container); }); } // 使用MutationObserver监听DOM变化 const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.addedNodes.length) checkMediaContainers(); }); }); observer.observe(document.body, { childList: true, subtree: true }); checkMediaContainers(); })();