X No Ads

Remove infused ads on X

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         X No Ads
// @namespace    http://techiev2.in/
// @description  Remove infused ads on X
// @author       techiev2
// @match        https://x.com/home
// @icon         https://www.google.com/s2/favicons?sz=64&domain=x.com
// @grant        none
// @license MIT
// @version 1.0.0
// ==/UserScript==

function removeAdElements() {
    const xpathResult = document.evaluate("//span[text()='Ad']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    Array.from({length: xpathResult.snapshotLength}, (_, i) => xpathResult.snapshotItem(i)).map((el) => {
        const root = el.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement;
        root.parentElement.removeChild(root)
    })
}

(() => {
    removeAdElements()
    window.$$observer = new MutationObserver((mutationList, observer) => {
        removeAdElements()
    });
    window.$$observer.observe(document.body, { attributes: true, childList: true, subtree: true });
    document.onbeforeunload = () => {
        window.$$observer.disconnect();
        return true;
    }
})()