Bonsoir,
Suite des problèmes de mise en oeuvre.
Lors du debug de mon traitement des hash je tombe sur le problème suivant :
Les valeurs renvoyées par window.location.hash sont "réencodées" par rapport au href (ce qui n'a pas lieu d'être sauf non ascii) et je ne trouve pas pourquoi :
- contexte : dans Wordpress actuellement les liens href sont assurés par défaut par les identifiants automatiques basés (encodés pour éviter les réencodages) sur les titres d'articles , ainsi le titre d'un article est:
{Les règles font elles lesprit de, ou lesprit de fabrique-t-il des règles qui lui correspondent<br><small>encore une histoire doeuf et de poule</small>[L] }
(note : Les titres acceptent certains tags html affectant les polices et mise en forme simples)
Cela va donner un href =
#tocid-les-rgles-font-elles-l8221esprit-de8221-ou-l8221esprit-de8221-fabrique-t-il-des-rgles-qui-lui-correspondentencore-une-histoire-d8217oeuf-et-de-poulel
(note : "tocid-" est un sélecteur de hash ajouté au titre identifiant de l'article dans la base de données WP)
il lui correspond le id de la cible généré par le plugin sans aucun encodage (normalement ascii pur).
Le problème est que le hash qui s'affiche devient :
#tocid-les-rgles-font-elles-l82178221esprit-de8221-ou-l82178221esprit-de8221-fabrique-t-il-des-rgles-qui-lui-correspondentencore-une-histoire-d8217oeuf-et-de-poulel
J'y perds mon latin.
L'encodage qui n'a pas lieu d'être, me semble-t-il, généré par ? le navigateur vient remplacer une fois sur deux 8221 (double apostrophe droite unicode : Unicode Character 'RIGHT DOUBLE QUOTATION MARK' (U+201D) en (82178221 : Unicode Character 'RIGHT DOUBLE QUOTATION MARK' (U+201D) + Unicode Character 'RIGHT SINGLE QUOTATION MARK' (U+2019))
qui se trouvent dans le titre étendu d'origine... mais n'a rien à voir.
Je ne vois pas en quoi l'URI peut être modifiée parce qu'elle contient des valeur numériques unicode valides ?
Ou est la bidouille. Evidemment l'encodage ascii du titre a viré les cascades de "quotation mark", mais comment ressortent-elles dans le hash ?.
Avec des coup comme ça, je risque des bugs...
Si vous avez une idée ?
Pour l'instant, mon jeu test a fait planter le système, comment ? Sans avoir de réponse, sans savoir pourquoi, j'ai le risque d'autres bizarreries.
Cordialement
Trebly
Partager