如何动态设置emoji unicode

O. *_*dze 6 html javascript css unicode utf-8

这就是我的 html 代码的样子:

<html>
<style>
    body {
        font-size: 18px;
    }
</style>
<body>
    <span id="tiger" style='font-size:100px;'>&#128161;</span>
    <button id="btn">SET TIGER</button>

    <script>
        document.getElementById('btn').addEventListener('click', function (e) {
            document.getElementById('tiger').innerText = `&#129409;`;
        });
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但它不起作用,并且&#129409;在单击按钮时仅显示而不是表情符号。这是为什么,如何动态设置表情符号?

tra*_*r53 7

HTML 转义

HTML 转义如“” 在解析源文档时由 HTML 解析器进行解码。

要设置文本节点的内容,请使用 JavaScript 字符串 - 从技术上讲,该字符串以 UTF-16 编码。

JavaScript 字符串

如果您知道 UTF-16 中字符的十六进制表示形式,您 可以使用转义字符串设置文本节点内容,例如

element.textContent = "\ud83d\udca1"; // not recommended.
Run Code Online (Sandbox Code Playgroud)

如果您知道十六进制或十进制的 Unicode 值,则可以使用静态 StringfromCodePoint方法:

 element.textContent = String.fromCodePoint( 0x1f4a1) // or
 element.textContent = String.fromCodePoint( 128161 )
Run Code Online (Sandbox Code Playgroud)

另一种选择是在 JavaScript 中使用带有大括号的 unicode 转义来转义 6 个十六进制字符代码:

 element.textContent = '\u{01f4a1}'; // still not recommended
Run Code Online (Sandbox Code Playgroud)

不过,我推荐的方法是在保存时将 HTML 文件编码为 UTF-8,并在代码中使用标准字符串值设置文本内容:

 element.textContent = ''
Run Code Online (Sandbox Code Playgroud)

当然,代码编辑器对 Unicode 字体的支持有限,这使得这有点困难。


指定字符编码

正如评论中提到的,HTML 文件中使用的字符编码可以在使用非 ASCII 字符之前在 head 部分的顶部指定。放置元标记

 <meta charset="utf-8">
Run Code Online (Sandbox Code Playgroud)

紧接在开始<html>标签之后即可实现此目的。

虽然 HTML5 中的默认编码是“utf-8”,但旧移动设备上的浏览器可能仍然需要使用上面的元标记。有关更多详细信息,请参阅三年前的这个问题。


小智 1

<html>
<style>
    body {
        font-size: 18px;
    }
</style>
<body>
    <span id="tiger" style='font-size:100px;'>&#128161;</span>
    <button id="btn">SET TIGER</button>

    <script>
    var code = '129409';
         //
        document.getElementById('btn').addEventListener('click', function (e) {
            document.getElementById('tiger').innerText = String.fromCodePoint(parseInt(code));;
        });
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

请检查以下内容,希望您的疑问得到解决。

<html>
<style>
    body {
        font-size: 18px;
    }
</style>
<body>
    <span id="tiger" style='font-size:100px;'>&#128161;</span>
    <button id="btn">SET TIGER</button>

    <script>
    var code = '129409';
         //
        document.getElementById('btn').addEventListener('click', function (e) {
            document.getElementById('tiger').innerText = String.fromCodePoint(parseInt(code));;
        });
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)