this post was submitted on 19 Aug 2023
4 points (75.0% liked)

FF addons&extensions

278 readers
1 users here now

Share your Firefox extensions or search tools.

founded 3 years ago
MODERATORS
 

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.

top 4 comments
sorted by: hot top controversial new old
[–] [email protected] 2 points 1 year ago (2 children)

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)

[–] [email protected] 1 points 1 year ago (1 children)

I tried it a bit, but now it repeatedly activates the extension and lags the browser.

[–] afoutopatisa 1 points 1 year ago* (last edited 1 year ago)

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/

[–] [email protected] 1 points 1 year ago* (last edited 1 year ago)

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?