Remove Reddit Promoted

Hide annoying promoted posts by reddit

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Remove Reddit Promoted
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Hide annoying promoted posts by reddit
// @author       pfn0
// @match        https://www.reddit.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=reddit.com
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    function removeChild(target) {
        var node = target;
        while (node != null && !node.matches("[data-testid=post-container],[data-scroller-first],[role=presentation]") && document !== node.parentNode) {
            node = node.parentNode;
        }
        if (node) {
            if (node.style.display != "none") {
                node.style.display = "none";
                //console.log("remove " + node);
                //console.log("from " + target);
            }
        }
    }

    function removePromoted() {
            Array.prototype
                .filter.call(document.getElementsByTagName("span"),
                             (x => x.textContent == "promoted" && x.style.color !== undefined))
                             //(x => x.textContent == "promoted" && x.style.color == "rgb(120, 124, 126)"))
                .forEach(x => removeChild(x))
        Array.prototype.forEach.call(document.getElementsByTagName("shreddit-ad-post"), x => x.parentNode.removeChild(x))
        Array.prototype.forEach.call(document.getElementsByTagName("shreddit-comments-page-ad"), x => x.parentNode.removeChild(x))
        Array.prototype.forEach.call(document.getElementsByTagName("shreddit-sidebar-ad"), x => x.parentNode.removeChild(x))
        Array.prototype.forEach.call(document.getElementsByTagName("embed-snippet-share-button"), x => { x.style.display = 'none' });


    }
    removePromoted();
    const config = { attributes: true, childList: true, subtree: true };
    const callback = (mutationList, observer) => {
        removePromoted();
    };
    const observer = new MutationObserver(callback);
    observer.observe(document, config);
})();