11193 sujets

JavaScript, DOM et API Web HTML5

Bonjour, après avoir beaucoup lu d'informations utiles sur alsacreations.com, ceci est mon premier message sur ce forum, je vous remercie d'avance pour vos attentions. Smiley biggrin ,

Sur le site : a-et-a.com
Sur l'URL, par exemple : https://www.a-et-a.com/tous_les_produits_fr/patrons-couture.html
Mais aussi sur une page très simple comme :
https://www.a-et-a.com/tous_les_produits_fr/informations/nos-services/creations-pour-professionnels.html
Se trouve un sélecteur en haut à droite
upload/1635330354-83769-selecteur-a-et-a.jpg
qui permet de changer de magasin, changer la monnaie courante, passer de HT à TTC et inversement, changer de langue.
Le problème se pose avec FF 93.0 (64 bits) (au moins) et FF Android 93.2.0
Le sélecteur de monnaie se révèle instable, l'action de changement se faisant d'une part de façon aléatoire, le passage de HT à TTC et inversement, changeant la monnaie, ce qui est anormal (non codé et non voulu).
Les sélecteurs sont basés sur le javascript :
onchange="window.location.href=this.value;return false;"

L'url à charger étant passée dans value (en partie encodée 64) via l'option par exemple:
<option value="https://www.a-et-a.com/tous_les_produits_fr/directory/currency/switch/currency/ARS/uenc/aHR0cHM6Ly93d3cuYS1ldC1hLmNvbS90b3VzX2xlc19wcm9kdWl0c19mci9wYXRyb25zLWNvdXR1cmUvZW5mYW50cy5odG1sP19fX1NJRD1VJmluYz0,/">
					ARS - peso argentin				</option>

Ce qui me trouble c'est que :
- ce sélecteur, a fonctionné sous Firefox par le passé (je n'ai pas noté la version).
- ce sélecteur est parfaitement fonctionnel et stable sous Edge, Chrome et Opera.
Après avoir lu pas mal de forums sur des sujets proches, j'ai ajouté récemment le code :
return false;

qui n'était pas présent à l'origine sans que ça ait la moindre influence sur aucun des navigateurs cités.
Si vous avez des idées, je suis preneur... (car j'ai déjà beaucoup cherché).
Suppression des cookies, effacement du cache, mode sans échec sous Firefox n'ont aucun effet.
Nota : le code en question, même si je sais y faire des modifications, est issu du CMS Magento mais bien sûr, les différentes personnalisations et extensions peuvent avoir leur importance.
Modifié par zuiko (27 Oct 2021 - 12:27)
Salut,

j'ai pas compris le but de ce <select>. sur un onchange il recharge la page ? de ce que je lis que tu choisisses TTC ou HT il se passe exactement la même chose.

A quoi ça sert ? pourquoi faire une refresh de la page ?
Bonjour Jencal,
merci de t'intéresser à mon problème.
Le but du sélecteur de changement de monnaie est de changer... la monnaie dans laquelle s'affichent les prix des produits vendus.
Donc, effectivement quand la monnaie change, il faut recharger la page pour afficher les produits qu'elle comporte avec leur prix recalculé.
Pour TTC/HT c'est le même problème, il faut recharger la page avec un re-calcul des prix avec ou sans TVA.
J'ai présenté deux pages très différentes qui pourtant présentent le même problème d'instabilité :
https://www.a-et-a.com/tous_les_produits_fr/patrons-couture.html
Qui comporte des produits dont le prix doit être recalculé au changement.
https://www.a-et-a.com/tous_les_produits_fr/informations/nos-services/creations-pour-professionnels.html
Qui est une page purement textuelle, sans produits ce qui pourtant ne modifie pas ses difficultés à changer de monnaie.
Pour se rendre compte du fonctionnement correct versus le fonctionnement incorrect, il est profitable de jouer à changer la monnaie et HT/TTC de la même page sous Firefox et l'un des navigateurs qui fonctionne correctement pour ce sujet (Chrome, Opera, Edge).

PS1 : j'avais oublié l'image du sélecteur dans mon 1er message, c'est réparé Smiley cligne .
PS2 : on peut faire l'expérience suivante : récupérer la "value" d'une option de monnaie sur une page affichant des produits (avec l'outil de développement web, par exemple), c'est une URL avec une partie encodée 64, comme expliqué ci-dessus. On colle cette URL dans la zone d'adresse d'un nouvel onglet Firefox, on charge et on observe que la page est bien affichée dans la bonne monnaie. Ce qui me fait dire que Firefox ne charge pas la page sur le onchange puisque cela ne marche pas avec le select car window.location.href est inefficace dans ce cas là pour une raison qui m'est inconnue.
Plus exactement, j'ai l'impression que la page de l'option "fait semblant" d'être chargée mais on revient à la page d'origine (sans changement de monnaie, donc).
Modifié par zuiko (27 Oct 2021 - 13:05)
Résolu :
J'ai changé
onchange="window.location.href=this.value;return false;"

en
onchange="window.location.href=this.value;window.open(this.value,'_top');return false;"

pour les deux sélecteurs concernés (monnaie et TTC/HT)
et cela fonctionne y compris pour Firefox (Windows/Android après vidage du cache).
Je trouve cela lourd et normalement inutile mais je ne vais pas faire la fine bouche.

Merci à tous ceux qui se sont intéressés à ce problème.

Je considère cette solution comme un palliatif, n'y aurait-il pas quelque chose à remonter côté gestion des bugs Firefox ?
Modifié par zuiko (27 Oct 2021 - 17:26)