// ==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();
})();