Impression d'emojis avec JavaScript et HTML
Pourquoi ce travail:
<p id="emoji">😄</p>
Et ce n'est pas le cas:
document.getElementById("emoji").innerHTML = String.fromCharCode(parseInt('1f604', 16));
source d'informationauteur Tom Söderlund | 2014-03-10
Vous devez vous connecter pour publier un commentaire.
Un "char" en JS termes est en fait un code UTF-16 unité, et non pas plein de caractère Unicode. (Ce triste état de choses découle de l'antiquité, quand il n'y avait pas une différence*.) L'utilisation d'un caractère hors du Plan Multilingue de Base que vous avez à écrire dans l'UTF-16-forme codée d'un paire de substitution de deux 16 bits unités de code:
Dans ECMAScript 6 nous obtiendrons des interfaces qui permettent de traiter les chaînes de caractères comme s'ils étaient pleins de points de code Unicode, même si elles sont incomplètes et ne sont qu'une façade sur le type String qui est encore dans la mémoire comme une unité de code de la séquence. Ensuite, nous allons être en mesure de le faire:
Voir cette question pour certains polyfill de code pour vous permettre d'utiliser cette fonctionnalité dans les navigateurs d'aujourd'hui.
(*: Quand je reçois un accès à une machine de temps je vais la laisser Hitler seul et pour en revenir à inventer UTF-8 plus tôt. UTF-16 ne doit jamais avoir été!)
Vous pouvez également utiliser le hacky méthode si vous ne voulez pas inclure
String.fromCodePoint()
dans votre code. Il consiste en la création d'un élément virtuel ...elem=document.createElement('p')
... De le remplir avec le HTML...
elem.innerHTML = "😄"
... Et enfin sa valeur
value = elem.innerHTML
Pour faire court, cela fonctionne en raison du fait que, dès que vous définissez la valeur d'un conteneur HTML, la valeur est convertie en caractère correspondant.
Espère que je pourrais aider.