OVH Cloud OVH Cloud

& en dur ou en dynamique

10 réponses
Avatar
Bul
bonjour à tous,
une question de beubeu :
<form>
<input type="text" value="&amp;&#61;&#160;&#62;" />
<input type="text" id="txt" />
</form>
<script type="text/javascript">
document.getElementById("txt").value="&amp;&#61;&#160;&#62;";
</script>
pourquoi l'affichage n'est-il pas le même dans les 2 champs ?
comment faire pour, qu'en javascript, cela soit "interprété" ?
merci d'avance. @+

10 réponses

Avatar
newdb
Bul wrote:
<input type="text" value="&amp;&#61;&#160;&#62;" />
<script type="text/javascript">
document.getElementById("txt").value="&amp;&#61;&#160;&#62;";
</script>
comment faire pour, qu'en javascript, cela soit "interprété" ?


comme tu veux afficher dans un imput, il te faut fournir de l'hexa :

document.getElementById("txt").value="x26 x3D xA0 x3E";

mais attention ! tu auras des différences pour l'affichage de l'espace
suivant que le navigateur tourne sous windows ou macOS :

sous windows (codage ANSI), l'espace => xCA
mais s'affiche E majuscule accent circonflexe sous macOS

sous macOS (codage MacRoman), l'espace => xA0
mais s'affiche 'dague/épée' sous windows


pour les différence d'encodage voir :
<http://www.alanwood.net/demos/>

--
@@@@@
E -00 comme on est very beaux dis !
' `) /
|_ =="

Avatar
Bul
merci de la réponse denib,
je ne voulais pas toucher aux "&#valeur",
on doit bien pouvoir faire : &#valeur ==> xHéxa ==> champ ?
Avatar
newdb
Bul wrote:
je ne voulais pas toucher aux "&#valeur",
on doit bien pouvoir faire : &#valeur ==> xHéxa ==> champ ?


vi !
tu peux essayer :

<script type="text/javascript">
function unicodeMoi() {
var i;
var txt_entitee = document.getElementById("depart").value;
var txt_unicode = "";
for (i=0; i<txt_entitee.length; i++) {
txt_unicode += String.fromCharCode(txt_entitee.charCodeAt(i));
}
document.getElementById("arrivee").value=txt_unicode;
alert(document.getElementById("arrivee").value);
return false;
}
</script>

<form name="le_formulaire" onSubmit="return unicodeMoi()">
input de d&eacute;part :<br />
<input type="text" id="depart" value="&amp;&#61;&#160;&#62;" /><br />
input de test :<br />
<input type="text" id="test" value="" / readonly><br />
input d'arriv&eacute;e :<br />
<input type="text" id="arrivee" value="" /><br />
<input type="submit" name="submit" value="Conversion Unicode">
</form>

<script type="text/javascript">
document.getElementById("test").value="&amp;&#61;&#160;&#62;";
</script>

--
@@@@@
E -00 comme on est very beaux dis !
' `) /
|_ =="

Avatar
Bul
ça fonctionne parfaitement bien, Merci beaucoup.
j'espérais qu'un traitement caractère par caractère
ne serait pas nécessaire, ça semble curieux d'être
obligé de passer par là. enfin, s'il n'y a pas d'autres
possibilités... [ on n'est jamais content malgré la qualité
des réponses apportées ] @+
Avatar
Bul
ben en fait ce n'est pas tout à fait ce que je voudrais faire...
[ je disais bien : jamais content ] il faut partir des &#

<script type="text/javascript">
var i;
var txt_entitee = "&#61;&#160;&#62;";
var txt_unicode = "";
for (i=0; i<txt_entitee.length; i++) {
txt_unicode += String.fromCharCode(txt_entitee.charCodeAt(i));
}
alert(txt_unicode);
</script>

et là ???
Avatar
newdb
Bul wrote:
il faut partir des &#


ha !
alors un truc vite fait :

<script type="text/javascript">
function repondMoi() {
var reponse = '';
var question = document.getElementById("depart").value;
question = question.replace(/s/g, '');
var listArray = question.split(';');
for (var i = 0; i < listArray.length-1; i++) {
var n = parseInt(listArray[i].substring(2, listArray[i].length),
10);
reponse += String.fromCharCode(n);
}
document.getElementById("arrivee").value = reponse;
alert(document.getElementById("arrivee").value);
return false;
}
</script>
</HEAD>
<BODY>
<form name="le_formulaire" onSubmit="return repondMoi()">
input de d&eacute;part (sous la forme &amp;#61;&amp;#160;&amp;#62;):<br
/>
<input type="text" id="depart" value="" /><br />
input d'arriv&eacute;e :<br />
<input type="text" id="arrivee" value="" /><br />
<input type="submit" name="submit" value="Conversion">
</form>


--
@@@@@
E -00 comme on est very beaux dis !
' `) /
|_ =="

Avatar
newdb
denisb wrote:
reponse += String.fromCharCode(n);


je me réponds à moi-même.
c'est prétentieux.
mais ça me permet d'ajouter quelques explications et une autre
possibilité d'utilisation :

<script type="text/javascript">
// pour éviter de vérifier à chaque utilisation
// le support de gEBI par le navigateur
if ( (!document.getElementById) && document.all ) {
document.getElementById = function(id){return document.all[id];};
}
function repondMoi(question) {
// initialisation à vide de la variable
// qui sera retournée par la fonction
var reponse = '';
// suppression des blancs au cas ou
question = question.replace(/s/g, '');
// découpage de la chaine de caractères à chaque point virgule
// création d'un tableau de ces valeurs
var listArray = question.split(';');
// pour chacune des valeurs de ce tableau
for (var i = 0; i < listArray.length-1; i++) {
// récuperation de sa partie numérique en base 10
var n = parseInt(listArray[i].substring(2, listArray[i].length), 10);
// conversion en unicode de la valeur récupérée
// et concatenation
reponse += String.fromCharCode(n);
}
// affectation de la valeur unicode créée à l'élément 'arrivee'
document.getElementById("arrivee").value = reponse;
}
</script>

<form name="le_formulaire">
input de d&eacute;part (sous la forme &amp;#61;&amp;#160;&amp;#62;) :<br
/>
<input type="text" id="depart" value=""
onBlur="repondMoi(this.value);"/><br />
input d'arriv&eacute;e :<br />
<input type="text" id="arrivee" value="" />
</form>

--
@@@@@
E -00 comme on est very beaux dis !
' `) /
|_ =="

Avatar
Bul
merci beaucoup denisb, tu m'as appris pas mal de choses.
ça ne pourra pas répondre totalement, mais c'est déjà
très bien. @+
Avatar
O.L.
denisb a formulé ce vendredi :
denisb wrote:
reponse += String.fromCharCode(n);


je me réponds à moi-même.
c'est prétentieux.


Oh là là, c'est vrai que c'est très très prétentieux ! ;-)
Heureusement qu'on a encore le droit de se répondre à soi même, sinon
toutes les bêtises que je dit ne pourraient plus être auto-corrigées
... :-/

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net


Avatar
Olivier Miakinen

Bul wrote:
<input type="text" value="&amp;&#61;&#160;&#62;" />
<script type="text/javascript">
document.getElementById("txt").value="&amp;&#61;&#160;&#62;";
</script>
comment faire pour, qu'en javascript, cela soit "interprété" ?


comme tu veux afficher dans un imput, il te faut fournir de l'hexa :

document.getElementById("txt").value="x26 x3D xA0 x3E";


Plutôt document.getElementById("txt").value="x26x3DxA0x3E";
Voire document.getElementById("txt").value="u0026u003Du00A0u003E";


mais attention ! tu auras des différences pour l'affichage de l'espace
suivant que le navigateur tourne sous windows ou macOS :


Mais non ! Si tu déclares correctement la table de caractères utilisée
pour encoder la page, il n'y a pas de problèmes. Et d'ailleurs, même si
tu déclares n'importe quoi, cela ne doit rien changer aux entités
numériques HTML (&#NNNN;) ni aux définitions hexa javascript (xNN ou
uNNNN).

sous windows (codage ANSI), l'espace => xCA
mais s'affiche E majuscule accent circonflexe sous macOS

sous macOS (codage MacRoman), l'espace => xA0
mais s'affiche 'dague/épée' sous windows


C'est l'inverse. L'espace insécable a pour numéro 160 (A0 hexa) dans
CP1252 (ce que tu appelles ANSI), de même que dans ISO-8859-1 et dans
Unicode, mais elle a comme numéro 202 (CA hexa) en MacRoman.

Mais comme les deux syntaxes HTML et JavaScript utilisent les numéros
Unicode, c'est forcément 160 (00A0).


--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)