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

时间:2013-06-26 14:39:15

标签: javascript html jasmine

我有一个包含设置图标的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;');
  });

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

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

3 个答案:

答案 0 :(得分:3)

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

.toContain(String.fromCharCode(9881))

答案 1 :(得分:2)

您应该检查字符串'⚙',或者如果您不在代码中输入它,则应检查转义符号\u2699。还有其他笨拙的方法来构造包含该字符的字符串,但简单性最好。

无论角色如何用HTML源代码编写(例如,作为参考&#9881;),它都会在DOM中显示为角色本身U + 2699。在JavaScript中,类似&#9881;的字符串只是七个Ascii字符的序列(尽管您可以将其传递给将其解析为HTML字符引用的函数,或者您可以将其分配给innerHTML属性,导致HTML解析,但这是毫无意义和令人困惑的。)

答案 2 :(得分:1)

为了匹配浏览器行为(因为你不知道它是如何用html或文本编码的)我会尝试以下

.toContain($("<span>&#9881;</span>").text())代替.toContain('&#9881;')

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

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