Skip to content

Instantly share code, notes, and snippets.

@ishowta
Created July 2, 2019 16:09
Show Gist options
  • Save ishowta/1203b176cd9c9abe3ddda50c2dfc1869 to your computer and use it in GitHub Desktop.
Save ishowta/1203b176cd9c9abe3ddda50c2dfc1869 to your computer and use it in GitHub Desktop.
Remove Artwork & Header From Soundcloud
function run(nodes){
nodes.forEach(function(node){
if(typeof node.querySelectorAll !== "function") return;
// Remove artwork
node.querySelectorAll("span.sc-artwork").forEach(function(e){e.remove()})
// Remove header
node.querySelectorAll("div.profileHeaderBackground__visual").forEach(function(e){e.remove()})
})
}
run([document])
// https://stackoverflow.com/questions/3219758/detect-changes-in-the-dom
var observeDOM = (function(){
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
return function( obj, callback ){
if( !obj || !obj.nodeType === 1 ) return; // validation
if( MutationObserver ){
// define a new observer
var obs = new MutationObserver(function(mutations, observer){
callback(mutations);
})
// have the observer observe foo for changes in children
obs.observe( obj, { childList:true, subtree:true });
}
else if( window.addEventListener ){
obj.addEventListener('DOMNodeInserted', callback, false);
obj.addEventListener('DOMNodeRemoved', callback, false);
}
}
})();
// Observe a specific DOM element:
observeDOM( document, function(m){
var addedNodes = [], removedNodes = [];
m.forEach(record => record.addedNodes.length & addedNodes.push(...record.addedNodes))
m.forEach(record => record.removedNodes.length & removedNodes.push(...record.removedNodes))
// console.clear();
// console.log('Added:', addedNodes, 'Removed:', removedNodes);
nodes = addedNodes.concat(removedNodes);
run(nodes);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment