Skip to content

Instantly share code, notes, and snippets.

@altryne
Created July 24, 2023 23:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save altryne/9bb274746feef4c3231264b65fa512b0 to your computer and use it in GitHub Desktop.
Save altryne/9bb274746feef4c3231264b65fa512b0 to your computer and use it in GitHub Desktop.
Change twitter favicon
(function() {
const faviconDataUri = "data:image/png;base64,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"; // Replace with the actual Data URI from the file
function setFavicon() {
let favicon = document.querySelector("link[rel*='icon']");
if (!favicon) {
favicon = document.createElement("link");
favicon.rel = "icon";
document.head.appendChild(favicon);
} else {
// Create a new favicon link to ensure browsers pick up the change
const newFavicon = document.createElement("link");
newFavicon.rel = "icon";
newFavicon.href = faviconDataUri;
document.head.appendChild(newFavicon);
favicon.remove();
}
}
const observer = new MutationObserver((mutations) => {
for (let mutation of mutations) {
if (mutation.type === "childList") {
const addedNodes = Array.from(mutation.addedNodes);
const faviconChanged = addedNodes.some(node => node.tagName === 'LINK' && node.rel.includes('icon'));
if (faviconChanged) {
setTimeout(setFavicon, 1000); // Delayed replacement after 1 second
}
}
}
});
observer.observe(document.head, { childList: true });
// Initial set
setFavicon();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment