在可编辑的div中使用表情符号

Leo*_*Leo 6 html javascript css emoji

我正在使用twemoji库在输入字段中显示表情符号(contanteditable div):

<div contenteditable="true" id="input_div"></div>
Run Code Online (Sandbox Code Playgroud)

用户可以使用外部按钮添加表情符号,这样我就可以非常简单地将它添加到div中(让我们不关心插入位置):

div.innerHTML += twemoji.parse(emoji);
Run Code Online (Sandbox Code Playgroud)

接下来我需要用表情符号从div获取用户输入,是否有一些简单的方法可以转换回unicode字符?

我目前的解决方案在这里(我只是解析<img>得到alt属性),但我认为它看起来有点复杂,我不能使用div.innerText属性(相当方便摆脱DIV纯文本),因为我失去了表情符号.我也div.getInnerText用来防止从剪贴板插入html或图像:

div.addEventListener("insert", () => {setTimeout(div.innerText = div.innerText,0)})
Run Code Online (Sandbox Code Playgroud)

Der*_*man 4

因此,我创建了一个可工作的可编辑 div,带有漂亮的 twemoji 选项卡,就像 WhatsApp 一样!

我对 Twemoji 脚本进行了一些编辑,使其完美运行。有很多工作,伙计!

所以这是小提琴

以及将 unicode 转换为 twemoji 图像并切换选项卡的代码:

  function convert() {
    document.body.innerHTML = twemoji.parse(document.body.innerHTML);
  }
  convert();

  $(document).delegate('.emoji-header button', 'click', function() {
    index = $(this).index()
    $('.emoji-panel').css({
      'transform': 'translateX(-' + index + '00%)'
    });
  });

  $('.emoji-panel .emojicon').on('click', function() {
    $('.message').append($('img', this).clone());
  });
  $('.message').on('keypress', function(event) {
    if (event.keyCode == 13 && !event.shiftKey) {
      event.preventDefault();
    }
  });
Run Code Online (Sandbox Code Playgroud)

编码愉快,顺便说一句,这是一个很好的问题!