Eu tenho um textarea que pode ser alterado por alguns botões adicionando tags html, porém quando eu coloco as tags por esse método o ctrl + z ou ctrl + y não funcionam nas tags colocadas por essas funções, meu código:
function textEditor(element, type) {
if (typeof element.selectionStart !== "undefined") {
element.focus();
var startPos = element.selectionStart;
var endPos = element.selectionEnd;
var selectedText = element.value.substring(startPos, endPos);
// Definir as tags de abertura e fechamento com base no tipo de formatação
var openingTag, closingTag;
switch (type) {
case "p":
openingTag = "<p>";
closingTag = "</p>";
break;
case "h2":
openingTag = "<h2>";
closingTag = "</h2>";
break;
case "bold":
openingTag = "<strong>";
closingTag = "</strong>";
break;
case "italic":
openingTag = "<em>";
closingTag = "</em>";
break;
case "underline":
openingTag = "<u>";
closingTag = "</u>";
break;
default:
openingTag = "";
closingTag = "";
break;
}
// Aplicar a formatação ao texto selecionado
var formattedText = openingTag + selectedText + closingTag;
// Substituir o texto selecionado pelo texto formatado
var newText = element.value.substring(0, startPos) + formattedText + element.value.substring(endPos);
element.value = newText;
// Ajustar a posição do cursor
var newCursorPos = startPos + openingTag.length;
element.setSelectionRange(newCursorPos, newCursorPos);
}
}