如何从其字形中解码 html 杂项符号

How to decode html miscellaneous symbol from its glyph?

本文关键字:解码 html 杂项 符号 字形      更新时间:2023-09-26

>我有一个div,其中包含一个设置 图标,该图标是 html 杂项符号

<span class="settings-icon">&#9881;</span>

我有一个茉莉花测试,可以检查div 内容以确保它没有改变。

  it("the settings div should contain &#9881;", function() {
    var settingsIconDiv = $('.settings-icon');
     expect(settingsIconDiv.text())
       .toContain('&#9881;');
  });

它不会通过,因为它被评估为齿轮图标⚙的字形符号

如何解码字形以通过测试?

要从 Unicode 获取实际字符以将其与 HTML 中的文字进行比较,您可以使用 String.fromCharCode(( 例如

.toContain(String.fromCharCode(9881))
您应该

检查字符串'⚙'或者,如果您不知道如何在代码中输入它,则转义表示法'u2699。还有其他更笨拙的方法来构造包含字符的字符串,但简单是最好的。

无论字符在HTML源代码中如何编写(例如,作为引用&#9881;(,它都以字符本身U + 2699的形式出现在DOM中。在 JavaScript 中,像 &#9881; 这样的字符串只是一个由七个 Ascii 字符组成的序列(尽管您可以将其传递给将其解析为 HTML 字符引用的函数,或者您可以将其分配给例如 innerHTML 属性,从而导致 HTML 解析,但这毫无意义且令人困惑(。

为了匹配浏览器行为(因为您不知道它是如何在 html 或文本中编码的(,我会尝试以下操作

.toContain($("<span>&#9881;</span>").text())而不是.toContain('&#9881;').

这样它应该与它在 dom 中的存储方式相匹配。

Yuriy Galanter提到的String.fromCharCode(9881);肯定也是可靠的。但是因为 dom 引擎和 js 引擎是两个不同的部分,它们的行为可能不同,我会用这两种技术进行测试。