对图标字体HTML实体进行编码
Encode icon font HTML entity
我正在使用FontAwesome,希望从包含图标的元素中读取编码的HTML实体。例如,假设我在DOM中有这样的HTML:
<span class="fa"></span>
如何从元素中读取值
?CCD_ 2返回解码后的字符。
Mathias Bynen的库he.js完美地处理了这一问题,但对于客户端项目来说,它的包含量有点重(~85kb未优化!),我想要一个轻量级的解决方案,它不一定需要覆盖所有边缘情况。
这里有一把小提琴来说明这个问题:http://jsfiddle.net/ohfuffm9/
在解析HTML源代码时,浏览器会处理字符引用
,它只将解释的字符存储在DOM中。无法在标记中获取原始字符串。
但是,如果您知道元素内容是单个代码点,就像这里的U+F005一样,无论它在HTML源代码中是如何表示的,您都可以在JavaScript中以字符值的形式处理该代码点。您可以将数字代码点值获取为icon.innerHTML.charCodeAt(0)
。该值以十进制表示,在本例中为61445。如果需要,请将其转换为十六进制。您甚至可以从中构造字符串
,只需在十六进制值前后添加一些字符即可。但通常情况下,只使用角色会更简单。
经过一番挖掘,我在网上找到了这个要点,它做了我想要的事情,只是它希望实体是十进制值。我对它进行了一点清理(最初的代码风格有点奇怪),并进行了修改以处理十六进制值。
// encode(decode) html text into html entity (assuming entity is hex)
var HtmlEntity = {
decode : function(str) {
return str.replace(/&#x([0-9A-F]+);/gi, function(match, dec) {
return String.fromCharCode(parseInt(dec, 16));
});
},
encode : function(str) {
var buf = [];
for (var i = 0, length = str.length; i < length; i++) {
buf.push("&#x" + str[i].charCodeAt().toString(16) + ";");
}
return buf.join("");
}
};
var entity = '高级程序设计';
var str = '高级程序设计';
console.log(HtmlEntity.decode(entity) === str); // true
console.log(HtmlEntity.encode(str) === entity); // true
这可以很容易地修改为处理十六进制和十进制实体,但我的用例非常有限,所以我选择不这样做
这是一把小提琴,展示了预期的结果:http://jsfiddle.net/ohfuffm9/4/
- 将地理编码结果转换为php变量以发布到mysql数据库
- Json在完整日历中对数据进行了编码
- 微风得到的是实体而不是对象的集合
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- Box2D多个实体的一个夹具
- 在MSCRM 2015中使用javascript限制多实体查找
- 如何对每个用户每天只允许单击一次的按钮进行编码
- Javascript字符集编码
- 如何在javascript转换编码中将一个动态值从一个表单添加到另一个页面
- 如何在stfalcon/TinymceBundle(Symfony2)中配置实体编码
- 如何编码 html 标签实体 - JavaScript
- 使用 jQuery 对元素内的 HTML 实体进行编码
- 对图标字体HTML实体进行编码
- 为什么在视图中解析时,我的嵌入式ruby json字符串用html实体编码
- JSF 2.0/Facelets——JavaScript字符被编码为html实体
- 如何编码和解码HTML特殊字符以获得实体名称
- AngularJS资源:如何禁用url实体编码
- 在Opencart中使用Javascript或JQuery对HTML实体进行编码和解码
- 为什么我的字符串声明的位置会影响我的html编码实体是否会正确显示
- Javascript在服务器上编码HTML实体