so I was making an extension for firefox where it calculates and displays a user’s Karma. Now the extension works perfectly fine when you paste in your profile and go there, or if you refresh your profile. but if you go to the main menu of Lemmy, then back to your profile by clicking on your profile, the extension simply doesn’t work.
You’ll likely want to take a look at MutationObservers. That’s the most modern way that I know of to handle SPAs like Lemmy. (Well, Lemmy is technically a hybrid in that the first load is done server-side, which is why your addon works when you refresh)
I ended up going primitive and used intervals to check if a particular div was visible:
function refreshExtension() { console.log("checking ", shown); const targetNode = document.getElementsByClassName("person-details")[0]; if (!shown && targetNode) { main(); } if (!targetNode) { shown = false; } } setInterval(refreshExtension, 200);
will it affect performance?
That’s quite inefficient. It will impact performance but I’m not sure on how significant that impact would be.
I tried it a bit, but now it repeatedly activates the extension and lags the browser.
You may want to give a go at my implementation of MutationObserver for lemmy-keyboard-navigation --> https://github.com/vmavromatis/Lemmy-keyboard-navigation/blob/main/lemmy-keyboard-navigation.user.js#L636-L652 I did have to use
onload
for the initial page load though :/End result -> https://addons.mozilla.org/en-US/firefox/addon/lemmy-keyboard-navigation/