Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2023, 11:14
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Цитировать сообщение свайпом
Привет мир!

Местный профессор написал вот такой скрипт, который прекрасно работает, вот он:

document.addEventListener("click", ({ target }) => {
    if (target = target.closest('.qutes')) {
        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`); // ставляем текст в инпут
    }
});


Код цитирует сообщения в чате. Очень захотелось научить телефон делать это свайпом, нашел такой код:

let start = null;
swipeElement.addEventListener("touchstart", function (event) {
    if (event.touches.length === 1) {
        start = event.touches.item(0).clientX;
    } else {
        start = null;
    }
});

swipeElement.addEventListener("touchend", function (event) {
    let offset = 100;
    if (start) {
        let end = event.changedTouches.item(0).clientX;
        if (end < start - offset) {
            console.log('Swipe right');
        }
    }
});


Но совместить их явно не для моих пока способностей, я долго пытался справиться самостоятельно, честно))))
Ответить с цитированием
  #2 (permalink)  
Старый 19.08.2023, 20:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

touch swap event
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`); // ставляем текст в инпут
                }
            }
        })
Ответить с цитированием
  #3 (permalink)  
Старый 19.08.2023, 20:53
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Привет рони.

Чето пока не алё, опять поди туплю. Файл:

https://noviy-kovcheg.ru/components/.../kidecustom.js

в самом конце
Ответить с цитированием
  #4 (permalink)  
Старый 19.08.2023, 21:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Ubivectel,
поставь скрипт отдельно там же, но действительно в конце , но не внутри чего-то. удалять тоже ничего не нужно.
Ответить с цитированием
  #5 (permalink)  
Старый 19.08.2023, 21:21
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Так?
Ответить с цитированием
  #6 (permalink)  
Старый 19.08.2023, 21:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Ubivectel,
да.
Ответить с цитированием
  #7 (permalink)  
Старый 19.08.2023, 21:31
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Полагаю все же внутри этого надо?

jQuery(function () {

});
Ответить с цитированием
  #8 (permalink)  
Старый 19.08.2023, 21:31
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Сообщение от рони Посмотреть сообщение
Ubivectel,
да.
Сделал, но таки не идет
Ответить с цитированием
  #9 (permalink)  
Старый 19.08.2023, 21:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сообщение от Ubivectel
Сделал, но таки не идет
возможно я не понял, что ты хочешь сделать, по кнопке цитирования проведи.
Ответить с цитированием
  #10 (permalink)  
Старый 19.08.2023, 21:42
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Аааа, а я думаю, что оно иногда вдруг срабатывает )))))))))))))
Не, хотелось бы свайп по блоку, но уже сообразил как это поменять, заработало, для полного марафета визуализировать бы как-то, думаю самое правильное будет при свайпе добавлять на пол секунды класс, скажем swiped. наверное это и сам асилю, но сегодня так изломал голову... )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить сообщение fear111 Общие вопросы Javascript 9 25.03.2016 20:40
Нужно всплывающее сообщение для сайта bursnabby Работа 4 30.05.2015 20:21
Система всплывающих сообщений ruslan_mart Ваши сайты и скрипты 32 27.05.2015 21:28
Как атоматически разослать одно сообщение многим людям? tsvigo Общие вопросы Javascript 4 09.01.2012 18:21
Это только для профи(всплывающее сообщение) Derack Элементы интерфейса 6 23.07.2009 14:22