Странное поведение при вставке текста со стилями в лист при помощи execCommand

Ниже предоставлен код где вы можете воспроизвести проблему. Шаги чтобы воспроизвести проблему:

  1. добавляем лист нажав на кнопку "Add List";
  2. пишим что-либо
  3. добавляем текст нажав на кнопку "Add Text";

Как видно текст который был добавлен не отформатирован (должен быть background-color: red и color: white)

Но если пропустить второй шаг, то все работает как ожидалось. Как исправить эту проблему? P.S. Заметил следующее: не работает только при условии что вставка текста будет в конце строки

function onAddText() {
  const html = generateHtml('Text');
  textArea.focus();
  document.execCommand('insertHTML', false, html);
}
function onAddList() {
  document.execCommand('insertunorderedlist');
  textArea.focus();
}

function generateHtml(value) {
  return `<span id="text">${value}</span>&#8203`;
}
document.addEventListener("DOMContentLoaded", function(event) { 
  textArea.focus();
});
#textArea {
  width: 400px;
  height: 100px;
  border: 1px solid #ccc;
}
#text {
  display: inline-block;
  background-color: red;
  color: white;
  padding: 0 5px;
  border-radius: 10px;
}
<html>
  <head>
    <title>Parcel Sandbox</title>
    <meta charset="UTF-8" />
    <link rel="stylesheet" href="./src/styles.css" />
  </head>

  <body>
    <div contenteditable="true" id="textArea"></div>
    <button onclick="onAddText()">Add Text</button>
    <button onclick="onAddList()">Add List</button>
    <script>
    </script>
  </body>
</html>


Ответы (0 шт):