Странное поведение при вставке текста со стилями в лист при помощи execCommand
Ниже предоставлен код где вы можете воспроизвести проблему. Шаги чтобы воспроизвести проблему:
- добавляем лист нажав на кнопку "Add List";
- пишим что-либо
- добавляем текст нажав на кнопку "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>​`;
}
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>