概述
最近在工作中遇到了移动端emoji的显示问题,于是查找了一些相关资料,试验了一番,把心得记录下来,供以后开发时参考,相信对其他人也有用。
参考资料:
为网站添加emoji表情的支持
思路
在页面上使用emoji主要推荐2个库:emojify.js和emoji。
其实所有emoji库的思路都是,用js找出字符串里面表示emoji的字符串,然后将它替换为img标签即可,也可以把它替换为span标签,然后用雪碧图的方式引入emoji图片。
下面来介绍一下这两个库的使用方法。
emojify.js
Github链接:emojify.js
首先去它的github下载它的css,js和images,然后运用它提供的replace这个api来把emoji字符串替换为图片。示例如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="emojify.min.css" />
</head>
<body>
<div id="emoji"></div>
<script src="emojify.min.js"></script>
<script>
var a = emojify.replace('I am happy :+1:');
document.querySelector('#emoji').innerHTML = a;
</script>
</body>
</html>
当然css和js也可以使用它提供的cdn:
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/css/basic/emojify.min.css" />
<script src="//cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/js/emojify.min.js"></script>
图片也可以使用它的cdn,只需要在setConfig这个api里面设置图片的cdn路径即可:
emojify.setConfig({img_dir : 'https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/images/basic'});
这个库的优点是,图片比较全,功能比较多,star数比较高。但是有一个很严重的缺点:就是只能识别双引号包裹的emoji表情,不能识别Unicode,Utf-16等形式的emoji表情。
emoji
Github链接:emoji
这个库相比上个库,优点是能够识别Utf-16形式的emoji表情,缺点是里面的emoji图片不够完整,有些emoji图片识别不了(我看源码发现js的识别代码还不完整),api就只有一个,而且好久都没有维护了。
使用方法也很简单,示例如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link href="http://cdn.staticfile.org/emoji/0.2.2/emoji.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="emoji"></div>
<div id="haha">