Skip to content

Instantly share code, notes, and snippets.

@i-rocky
Last active February 8, 2022 18:01
Show Gist options
  • Select an option

  • Save i-rocky/b0dcd24d5ffcff373ce24c88765d7f4a to your computer and use it in GitHub Desktop.

Select an option

Save i-rocky/b0dcd24d5ffcff373ce24c88765d7f4a to your computer and use it in GitHub Desktop.
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