Editor de texto sem usar exeCommand com getSelection() onde tenho um loop sem sentido
Sei que existem vários editores de texto online, mas pelo que percebi quase todos usam a função exeCommad que está declarada como descontinuada. Tenho um editor funcuina e bonito que fiz usando o comando anterior, mas já começou a deixar de funcionar em alguns dispositivos e seus navegadores.
Com isto em vista comecei o trabalho de formiga de recriar o editor, já tive avanços interessantes e uns bugs de loop que não fazem sentido.
Meu nível de javascrit é muito principiante e aprendi muita coisa com a necessidade e aplicação. Estou com dificuldades em entender todas as possibilidades da função
getSelection()
e talvez isso esteja me dando mais trabalho. Apesar disto o meu problema atual é um loop que não faz o menor sentido para mim na função PASTE (colar).
Quando executo a colagem pela primeira vez ele cola certinho, mas puxa o ponteiro para o início do texto, mas o problema vem quando faço a segunda colagem que ele cria um loop postando duas vezes, se fizer uma terceira vez ele faz o loop 3 vezes e assim por diante...
https://jsfiddle.net/alexandrejazara/v4s21gof/223/
Acima o código em desenvolvimento no momento.
Abaixo a parte onde pega o texto para ser colado e que realizo um tratamento para eliminar qualquer tag vinda do WOrd ou de outra página de internet.
**window.addEventListener("keydown", function(e) {**
**/* colar -> BUG!!! */
if (e.keyCode == 86 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
alert("Colar?");**
document.querySelector('[contenteditable]').addEventListener('paste', (e) => {
e.preventDefault();
const text = (e.originalEvent || e).clipboardData.getData('text/plain');
// alert('PASTE!!! '+text);
cp(class_limpa[1],text);
});
}
});
Aparentemente até a leitura da parte AZUL ele não faz o loop, mas quando habilito o segundo alert para verificar ele é executado pelo número de colagens que faço, se fizer uma ve ele roda uma vez, se precisar fazer uma segunda vez ele roda duas vezes e duplica o material colado e assim por diante.
Alguém sabe me dizer o que pode ser ou me dizer o termo que devo estudar para aprender a resolver isso?
Obrigado.Discussão (3)
Carregando comentários...