-
-
Save ottsch/51a3640910a82d36fcd1fc70ad4b109b to your computer and use it in GitHub Desktop.
new MutationObserver(() => { | |
let filtered = Array.prototype.filter.call( | |
document.querySelectorAll(".roam-body a"), | |
(a) => { | |
return a.hostname && !a.hostname.includes("roamresearch.com"); | |
} | |
); | |
Array.prototype.forEach.call(filtered, (a) => { | |
if (a.text == "*") { | |
a.style.background = `url(https://www.google.com/s2/favicons?sz=16&domain=${a.hostname}) right center no-repeat`; | |
a.style.paddingRight = "18px"; | |
} else { | |
a.style.background = `url(https://www.google.com/s2/favicons?sz=16&domain=${a.hostname}) left center no-repeat`; | |
a.style.paddingLeft = "20px"; | |
} | |
}); | |
}).observe(document.body, { | |
attributes: true, | |
childList: true, | |
subtree: true, | |
}); |
Nice, I love it!
What would I need to add to the code to enable favicons for aliased external links such as[Google](www.google.com)
as well?
Could you add this to the gist as well? :)
Edit: Just realised that it works for some links ifhttps://
is included in the aliased link:[Google](https://www.google.com)
.
I suppose there is a reason why it doesn't work with[Google](www.google.com)
butwww.google.com
without an alias does work?
Yes Roam seems to auto link urls in plain text but not in aliases
Good to know.
I tried to play around with the styling, but haven't managed to change much besides moving it to the right of the link. Given that the favicon is added as the background, is even possible to make it smaller and move it upwards (so it looks similar to a footnote)?
Good to know.
I tried to play around with the styling, but haven't managed to change much besides moving it to the right of the link. Given that the favicon is added as the background, is even possible to make it smaller and move it upwards (so it looks similar to a footnote)?
Try this as a starting point:
a.style.background = `url(https://www.google.com/s2/favicons?sz=16&domain=${a.hostname}) right top no-repeat`;
a.style.backgroundSize = "15%";
a.style.paddingRight = "10px";
Also no need for the if ... else anymore then.
Ok, thanks for the pointer. I tried that, but sadly, setting a.style.backgroundSize
completely freezes and crashed the Roam DB when trying to display a block with a link
The recent update to Roam Research seems to have broken this script. Is there any update to the style that will restore this?
I think the issue is that roam-body-main
now excludes the content of the right sidebar, so only links on the main page get the favicon. If you change the targeted class to roam-body
without the -main
in the second row, it works again. Perhaps there's also the option to target roam-body-main
as well as sidebar-content
, but I don't know how to do that.
Yes. That change fixes it. Thanks
I've updated the gist accordingly
Hi, just a small suggestion :).
What about renaming the observer to something like observerFav for people running multiple observers
(I know, inefficient but still). :)
Thank you for the great code!
The latest update to Roam breaks this script. I presume there's been a change in the CSS. It's a shame as I've grown to rely on this. The icons are a very economical visual reference.
Thanks for the update. I miss the visual favicons.
I found you can get this script to work again but disabling it and re-enabling it. There is something happening in the loading order.
Should work again 🤞
I think the solitary } in line 15 is superfluous.
I think the solitary } in line 15 is superfluous.
Can't find any unbalanced brackets. line 15 is the end of the else statement
Nevermind, I deleted/modified a bit and overlooked that. You're absolutely correct, of course
Hi @ottsch, is there anything that needs to be done to reactivate the favicons script? I don't think the code above has changed but it does not seem to work anymore for me.
Roam Research v0.7.8-4a1c7ba5
Hi @ottsch, is there anything that needs to be done to reactivate the favicons script? I don't think the code above has changed but it does not seem to work anymore for me.
Roam Research v0.7.8-4a1c7ba5
Hm it still works here ... Last change to the code was Jan 10.
Adding an async function wrapper seems to fix all broken JS. HT: @GitMurf for the heads-up.
async function loadFavicons() {
const addFavicons = () => {
let filtered = Array.prototype.filter.call(document.querySelectorAll('.roam-body a'), a => {
return a.hostname && a.hostname !== document.location.hostname;
});
Array.prototype.forEach.call(filtered, a => {
if (a.text == "*") {
a.style.background = `url(https://www.google.com/s2/favicons?sz=16&domain=${a.hostname}) right center no-repeat`;
a.style.paddingRight = "18px";
} else {
a.style.background = `url(https://www.google.com/s2/favicons?sz=16&domain=${a.hostname}) left center no-repeat`;
a.style.paddingLeft = "20px";
}
});
};
const observer = new MutationObserver(addFavicons);
observer.observe(document.querySelector('.roam-body'), {
attributes: true,
childList: true,
subtree: true
});
}
loadFavicons();
Really weird, still NOK for me... Same issue with Roamhacker_daytitle script... Could it be related to a combination of different scripts?
@ottsch any interest in updating this for the new official Roam plugin marketplace? If not would you be comfortable passing the reins to me or someone in the Roam community to keep it updated?
@8bitgentleman of course, go ahead!
Full disclosure @ottsch there is the potential for some proceeds from Roam for those who update and maintain plugins on the marketplace. Want to make sure you're aware of that and still OK with passing it on
@8bitgentleman Yep, that's fine with me
Nice, I love it!
What would I need to add to the code to enable favicons for aliased external links such as
[Google](www.google.com)
as well?Could you add this to the gist as well? :)
Edit: Just realised that it works for some links if
https://
is included in the aliased link:[Google](https://www.google.com)
.I suppose there is a reason why it doesn't work with
[Google](www.google.com)
butwww.google.com
without an alias does work?