emotion.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const emoTextList = ['微笑', '撇嘴', '色', '发呆', '得意', '流泪', '害羞', '闭嘴', '睡', '大哭', '尴尬', '发怒', '调皮', '呲牙', '惊讶', '难过', '酷',
  2. '冷汗', '抓狂', '吐', '偷笑', '可爱', '白眼', '傲慢', '饥饿', '困', '惊恐', '流汗', '憨笑', '大兵', '奋斗', '咒骂', '疑问', '嘘', '晕', '折磨',
  3. '衰', '骷髅', '敲打', '再见', '擦汗', '抠鼻', '鼓掌', '糗大了', '坏笑', '左哼哼', '右哼哼', '哈欠', '鄙视', '委屈', '快哭了', '阴险', '亲亲', '吓',
  4. '可怜', '菜刀', '西瓜', '啤酒', '篮球', '乒乓', '咖啡', '饭', '猪头', '玫瑰', '凋谢', '示爱', '爱心', '心碎', '蛋糕', '闪电', '炸弹', '刀', '足球',
  5. '瓢虫', '便便', '月亮', '太阳', '礼物', '拥抱', '强', '弱', '握手', '胜利', '抱拳', '勾引', '拳头', '差劲', '爱你', 'NO', 'OK', '爱情', '飞吻',
  6. '跳跳', '发抖', '怄火', '转圈', '磕头', '回头', '跳绳', '挥手', '激动', '街舞', '献吻', '左太极', '右太极'
  7. ];
  8. let emoImageUrlList = [];
  9. // 备注:经过测试,小程序的<rich-text>无法显示相对路径的图片,所以在这里对图片提前全部转成绝对路径
  10. // 提前初始化图片的url
  11. for (let i = 0; i < emoTextList.length; i++) {
  12. let path = `/static/emoji/${i}.gif`;
  13. uni.getImageInfo({
  14. src: path,
  15. success(res) {
  16. emoImageUrlList[i] = res.path
  17. },
  18. fail(res) {
  19. emoImageUrlList = path;
  20. }
  21. });
  22. }
  23. let transform = (content) => {
  24. return content.replace(/\#[\u4E00-\u9FA5]{1,3}\;/gi, textToImg);
  25. }
  26. // 将匹配结果替换表情图片
  27. let textToImg = (emoText) => {
  28. let word = emoText.replace(/\#|\;/gi, '');
  29. let idx = emoTextList.indexOf(word);
  30. let img = `<img src="${emoImageUrlList[idx]}" style="vertical-align:bottom;"/>`;
  31. return img;
  32. }
  33. let textToPath = (emoText) => {
  34. let word = emoText.replace(/\#|\;/gi, '');
  35. let idx = emoTextList.indexOf(word);
  36. return `/static/emoji/${idx}.gif`;
  37. }
  38. export default {
  39. emoTextList,
  40. transform,
  41. textToImg,
  42. textToPath
  43. }