[corrigé] le & dans les noms des points

Problèmes, bugs et difficultés rencontrés sur le site.
Avatar du membre
sly
Messages : 5058
Enregistré le : 29 févr. 2004, 17:59
Localisation : Chambéry - Savoie

[corrigé] le & dans les noms des points

Message par sly »

Aller, puisqu'on en est aussi aux bugs mineurs et que la modération s'est calmée, pour éviter de s'ennuyer ;-)

Quand le nom d'un point contient la caractère "&" son affichage sur la carte déconne et se transforme en &

Le cas ne se produire qu'une seule fois ici : https://www.refuges.info/point/8505 c'est donc clairement pas bien grave, mais au cas où ça puisse déclencher un autre bug, ou nous faire nous poser la question, je le signale.
Avatar du membre
Dominique
Messages : 3709
Enregistré le : 08 avr. 2006, 21:58

Re: [corrigé] le & dans les noms des points

Message par Dominique »

Alors ça, c’est marrant :
Quand j’écris (en js) © dans innerHTML et que je le relis (en js), j’obtiens © ascii utf8 (ce que je veux)
Quand j’écris > je relis >

Mais quand j’écris & je relis & (en js) alors que je vois & sur l’écran, soit l’effet inverse des autres caractères !

Comme je me sers de cette propriété pour interpréter (au sens html) des séquences à afficher dans les étiquettes de la carte (en canvas qui n’interprète rien) ça marche pour toutes les séquences sauf le & et le &

Ce n’est pas un bug puisque tous les explorateurs semblent faire la même chose y compris les non gecko et ça doit être lié à la position particulière du caractère & dans la séquence d’échappement html mais j’avoue que je ne comprends pas pourquoi.

Puisque exception je vais le traiter différemment en espérant qu’il n’y en n’a pas d’autres et que ça n’entrainera pas d’effets de bord.
Avatar du membre
sly
Messages : 5058
Enregistré le : 29 févr. 2004, 17:59
Localisation : Chambéry - Savoie

Re: [corrigé] le & dans les noms des points

Message par sly »

Punaise, je tape du javascript pour DOM HTML maintenant ! On aura tout vu !

A priori il faudrait prendre la propriété innerText et non innerHTML
The innerText property of the HTMLElement interface represents the rendered text content of a node and its descendants.
https://developer.mozilla.org/en-US/doc ... /innerText

Soit pour ton code :

Code : Tout sélectionner

       return {
         text: new ol.style.Text({
-          text: elLabel.innerHTML.replace('&', '&'), // Specific tratement for &
+          text: elLabel.innerText,
           overflow: properties.overflow, // Display label even if not contained in polygon
           textBaseline: featureArea ? 'middle' : 'bottom',
           offsetY: featureArea ? 0 : -13, // Above the icon
Testé, et ça semble marcher.
Avatar du membre
Dominique
Messages : 3709
Enregistré le : 08 avr. 2006, 21:58

Re: [corrigé] le & dans les noms des points

Message par Dominique »

Ha ben oui, c'est bien sûr !
On écrit du html et on lit du text, compatible avec le canvas :)
Merci Sly.