Ecrire des caractères spéciaux dans un objet OPTION créé en javascript

figogo Messages postés 5 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 février 2007 - 14 févr. 2007 à 18:31
figogo Messages postés 5 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 février 2007 - 16 févr. 2007 à 17:41
Bonjour à tous,

Mon site internet traite de caractères chinois (http://caractereschinois.free.fr) et j'ai des problèmes à afficher ces caractères dans des objets créés automatiquement par du javascript.

Au début j'utilisais innerHTML et tout allait bien. J'ajoutais le code comprenant l'objet OPTION directement dans le html de l'objet LIST et il était interprété comme il fallait.

list.innerHTML = '<option>&#25248;</option>';

Manque de pot, ça marche nickel avec Firefox, Safari et konqueror mais je me suis aperçu la semaine dernière que IE ne voulait rien savoir.

J'ai donc opté pour une méthode plus propre de création de mes options :

var newOption = new Option('&#25248;', 0);
list.options[0] = newOption;

Et là rien ne va plus, tout est interprété directement comme du texte et je vois donc afficher &#25248; et non le caractère lui-même( ? ).

Comment puis-je faire ?

Je suis pour l'instant en train d'opter pour une solution intermédiaire qui fonctionne avec firefox et toujours pas avec IE en faisant :

var newOption = new Option('', 0);
newOption.innserHTML = '&#25248;';
list.options[0] = newOption;

Merci d'avance,

figogo

PS : La valeur que je veux mettre dans mon option est en réalité une longue chaîne de données avec moult &#??; à l'intérieur, j'aimerai éviter de faire du travail dessus puisque je ne veux qu'afficher du html en html, puis éventuellement le relire.

5 réponses

astuces_jeux Messages postés 731 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 27 mai 2010
14 févr. 2007 à 20:34
par exemple si tu veux mettre " é " dans tes pages tu mets &eacute; par exemple si tu veux écrire " Créer " tu mets " Cr&eacute;er " pour " ' " tu mets &acute; par exemple l'envie c'est l&acute;envie ok ???
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
14 févr. 2007 à 20:38
Ca ne serait pas plus simple d'enregistrer ton document HTML ou ton fichier JS en encodage unicode, et d'écrire directement tes caractères chinois dedans à la place des &#xxxx; incompréhensibles ?

<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
0
figogo Messages postés 5 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 février 2007
14 févr. 2007 à 22:12
Bonjour astuces_jeux,
Merci pour ta réponse mais justement tu ne fais qu'illustrer mon problème, j'utilise bien les raccourcis &???; mais il se trouvent qu'ils ne sont pas interprétés dans le cas particulier que je décris dans mon exemple (pas interprété avec IE j'entends).

nightlord666,
j'essaie d'éviter d'utiliser les caractères chinois directement parce que l'affichage des raccourcis &???; est en général mieux géré que l'unicode vu qu'ils ne dépendent pas de l'encodage de la page (le seul problème vient du fait que je modifie le html en javascript et qu'IE ne le réinterprète pas dans ce cas précis).

Je tiens à préciser que par exemple je n'ai aucun problème à faire cette manipulation à l'intérieur d'un objet TD (objetTd.innerHTML = "&#" + unicodeValue + ";"; fonctionne avec IE, firefox et compagnie). Mon problème vient sans doute de l'imbrication d'objet (ajouter un enfant créé en javascript) ou de la méthode de création (utiliser nez) mais je ne sais pas vraiment.

Si je n'ai vraiment aucune solution je m'en remettrai à l'unicode mais je ne comprends toujours pas pourquoi ce que je fais ne serait pas permis avec IE.

Merci pour votre aide en tout cas,

Figogo
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
14 févr. 2007 à 22:30
De toute façon, quand tu fait en général un site qui utilise des caractères étrangers, il est plus sage de mettre tout ce que tu a en unicode (pages HTML, scripts, ...), comme ça ça te permet de gérer plus facilement tout ça.

Et en plus c'est logiquement plus rapide à l'affichage si tout est dans le même encodage (car les &#xxxx; vont de toute façon charger les polices unicode...).

<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
figogo Messages postés 5 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 20 février 2007
16 févr. 2007 à 17:41
Mon problème vient du fait que ce que j'affiche dans les <option> a été généré en php et php ne gère pas très bien l'unicode. Du coup j'initialise mes variables js (créée à partir du php) avec du code html qui peut être compliqué.

Pour tout le reste le html est correctement interprété sauf là, et personne ne semble savoir pourquoi.

:(
0
Rejoignez-nous