lovasoa / ophirofox

Une extension pour navigateur qui permet de lire les articles de presse en ligne sur le compte de bibliothèques ayant souscrit à europresse
https://ophirofox.ophir.dev
Mozilla Public License 2.0
61 stars 160 forks source link

Corrige l'affichage du bouton sur leparisien.fr (Firefox). #196

Closed Write closed 8 months ago

Write commented 8 months ago

Première tentative de push ici,

Ceci corrige le bouton ne s'affichant pas (où que très rarement) sur leparisien.fr sur le navigateur Firefox.

J'ai bien essayé d'unifier le code pour utiliser le MutationObserver sur Chrome, mais cela ne semble pas arriver à capturer l'element assez rapidement (?), je suis ouvert à propositions là dessus.

Pour le moment je vérifie donc si le navigateur est firefox, et si oui j'utilise l'API MutationObserver, autrement je fais comme avant, car cela a toujours bien fonctionné sur les navigateurs Chromiums.

Ceci corrige aussi le code CSS du bouton pour qu'il n'empiète plus sur l'entête de l'article.

En attendant vos retours,

Joffrey

lovasoa commented 8 months ago

Est-ce que l'on ne peut pas isoler le code qui recherche la bannière dans une fonction, et l'appeler à la fois au chargement initial, et dans le mutationobserver, quel que soit le navigateur?

Et est-ce qu'il ne faut pas continuer à observer les mutations après avoir trouvé la bannière une première fois? Si l'utilisateur navigue vers une autre page dans leur spa, alors on veut remettre le bouton sur le nouvel article, même si la navigation a été gérée entièrement en JavaScript, sans rechargement de page.

Write commented 8 months ago

Est-ce que l'on ne peut pas isoler le code qui recherche la bannière dans une fonction, et l'appeler à la fois au chargement initial, et dans le mutationobserver, quel que soit le navigateur?

Pourquoi pas, si je comprends bien : on ajoutera flag qui vérifierai si le bouton est déjà ajouté, et dans le MutationObserver, on vérifie donc si la bannière n'a pas déjà été ajouté si l'élément est trouvé (ce qui n'est pas censé arriver pour le moment, mais on ne sait jamais, je ne comprends déjà pas bien pourquoi Chrome ne "voit" pas la mutation), pour éviter un doublon de bouton ?

Après le problème serait de bien disconnect le MutationObserver sur Chrome, vu qu'il n'y aura jamais de match (en tout cas avec mes essais) il sera présent sans être déconnecté, à moins de mettre un setTimeout() qui clôt l'observer si aucun élément est trouvé au bout de X secondes.

J'ai bien réfléchi à d'autres solutions, mais je dois admettre que pour le moment ça fait un peu "sale" je crains que mes connaissances ne me permettent d'aller vraiment plus loin sur ce sujet.

Et est-ce qu'il ne faut pas continuer à observer les mutations après avoir trouvé la bannière une première fois? Si l'utilisateur navigue vers une autre page dans leur spa, alors on veut remettre le bouton sur le nouvel article, même si la navigation a été gérée entièrement en JavaScript, sans rechargement de page.

Je ne pense pas que cela soit nécessaire pour le site du Parisien qui, ne fonctionne pas de la même manière que Les échos. Chaque clique semble bien générer une nouvelle page et donc une nouvelle exécution du code JavaScript de l'extension, je ne trouve en tout cas aucune partie "dynamique" sur le site du Parisien, peut être m'a-t-elle échappée.

Write commented 8 months ago

Est-ce que l'on ne peut pas isoler le code qui recherche la bannière dans une fonction, et l'appeler à la fois au chargement initial, et dans le mutationobserver, quel que soit le navigateur?

Et est-ce qu'il ne faut pas continuer à observer les mutations après avoir trouvé la bannière une première fois? Si l'utilisateur navigue vers une autre page dans leur spa, alors on veut remettre le bouton sur le nouvel article, même si la navigation a été gérée entièrement en JavaScript, sans rechargement de page.

Voilà, j'ai essayé de faire de mon mieux pour suivre vos propositions :

lovasoa commented 8 months ago

Merci!