Last active
February 8, 2022 18:01
-
-
Save i-rocky/b0dcd24d5ffcff373ce24c88765d7f4a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const observeDOM = (function() { | |
| const MutationObserver = window.MutationObserver || | |
| window.WebKitMutationObserver; | |
| return function(obj, callback) { | |
| if (!obj || obj.nodeType !== 1) return; | |
| if (MutationObserver) { | |
| // define a new observer | |
| const mutationObserver = new MutationObserver(callback); | |
| // have the observer observe foo for changes in children | |
| mutationObserver.observe(obj, {childList: true, subtree: true}); | |
| return mutationObserver; | |
| } | |
| // browser support fallback | |
| else if (window.addEventListener) { | |
| obj.addEventListener('DOMNodeInserted', callback, false); | |
| obj.addEventListener('DOMNodeRemoved', callback, false); | |
| } | |
| }; | |
| })(); | |
| observeDOM(document.body, m => { | |
| m.forEach(e => { | |
| if (!e.addedNodes.length) { | |
| return; | |
| } | |
| const nodes = e.addedNodes; | |
| nodes.forEach(node => { | |
| if (!node.getAttribute || !node.getAttribute('data-pagelet')) { | |
| return true; | |
| } | |
| const match = 'Sponsored'; | |
| const a = node.querySelectorAll('a > span'); | |
| a.forEach(span => maybeHideThis(span, match)); | |
| }); | |
| }); | |
| }); | |
| function maybeHideThis(node, text) { | |
| const theText = getTextRecursive(node).join(''); | |
| console.log(theText); | |
| if (theText === text) { | |
| const wrapper = node.closest('[data-pagelet]'); | |
| if (wrapper) { | |
| wrapper.style.display = 'none'; | |
| } | |
| } | |
| } | |
| function getTextRecursive(node) { | |
| if (node.nodeType === 3) { | |
| return node.textContent; | |
| } | |
| const children = node.childNodes; | |
| if (!children.length) { | |
| return ''; | |
| } | |
| const r = []; | |
| for (let i = 0; i < children.length; i++) { | |
| if (children[i].style && (children[i].style.display === 'none' || children[i].style.position === 'absolute')) { | |
| continue; | |
| } | |
| r[i] = getTextRecursive(children[i]); | |
| } | |
| return r.flat(); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment