Ubivectel,
пробуй...
let touch_y, touch_x;
document.addEventListener("touchstart", (event) => {
let target = event.target;
if (target = target.closest('.qutes')) {
touch_y = event.changedTouches[event.changedTouches.length - 1].clientY;
touch_x = event.changedTouches[event.changedTouches.length - 1].clientX;
}
})
document.addEventListener("touchend", (event) => {
let target = event.target;
if (target = target.closest('.qutes')) {
let swap = (Math.abs(touch_y - event.changedTouches[event.changedTouches.length - 1].clientY) > 3 || Math.abs(touch_x - event.changedTouches[event.changedTouches.length - 1].clientX) > 3)
if (swap) {
target = target.closest('.KIDE_msg_top')
let clon = target.cloneNode(true); // Делаем копию узла с потомками
clon.querySelectorAll(".KIDE_quote").forEach(el => el.remove()); // Удаляем из копии все span.KIDE_msg
let text = clon.textContent.trim(); // Берем текст из клона
if (text.length > 60) text = text.slice(0, 60) + '...'
kide.insertSmile(`[QUOTE]${text}[/QUOTE]\n`); // ставляем текст в инпут
}
}
})