Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 14.08.2021, 13:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Ubivectel,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #32 (permalink)  
Старый 19.10.2021, 17:59
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Еще бы ограничить кол-во символов в цитате, меня хватило только на такое:

(function(){
    var cut = document.getElementsByClassName('KIDE_quote');
    for( var i = 0; i < cut.length; i++ ){
      cut[i].innerText = cut[i].innerText.slice(0,20) + '...';
    }
  })();


Но оно во первых не работает, а во вторых наверное дико создавать для этого отдельную функцию...
Ответить с цитированием
  #33 (permalink)  
Старый 19.10.2021, 20:36
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,700

Сообщение от Ubivectel
Еще бы ограничить кол-во символов в цитате
Обычно ограничивают не длину текста, а размер области, в которой он отображается.
Используя свойства Css max-width/max-height.
Что бы вставить многоточие, вместо отрезанного текста используют
text-overflow: ellipsis;
Ответить с цитированием
  #34 (permalink)  
Старый 20.10.2021, 10:37
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

С этого начал разумеется. Но там нагромождение тегов с заморочными стилями. А text-overflow: ellipsis;требует display: inline-block. На крайняк так и сделаю конечно, но на JS было бы в данном случае более красивым решением.
Ответить с цитированием
  #35 (permalink)  
Старый 20.10.2021, 11:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Ubivectel
не работает,
что не так?
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
</head>

<body>
    <div>
        <div class="KIDE_quote">Lorem ipsum dolor sit amet.</div>
        <div class="KIDE_quote">Est laboriosam ipsam numquam tempore.</div>
        <div class="KIDE_quote">Quos, porro consequatur itaque at?</div>
        <div class="KIDE_quote">Dolorum, quis recusandae enim minus!</div>
        <div class="KIDE_quote">A, nisi odio id distinctio.</div>
        <div class="KIDE_quote">Unde, explicabo amet officia placeat.</div>
        <div class="KIDE_quote">Iure assumenda ad labore deserunt?</div>
        <div class="KIDE_quote">Praesentium, deserunt eaque accusantium assumenda.</div>
        <div class="KIDE_quote">Fuga, odio incidunt accusantium perspiciatis.</div>
        <div class="KIDE_quote">Repudiandae labore eligendi perspiciatis alias?</div>
    </div>
    <script>
        (function() {
            var cut = document.getElementsByClassName('KIDE_quote');
            for (var i = 0; i < cut.length; i++) {
                cut[i].innerText = cut[i].innerText.slice(0, 20) + '...';
            }
        })();
    </script>
</body>

</html>
Ответить с цитированием
  #36 (permalink)  
Старый 20.10.2021, 12:12
Профессор
Отправить личное сообщение для 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; // Берем текст из клона
        kide.insertSmile(`[QUOTE]${text}[/QUOTE]\n`);
    }
});

(function(){
    var cut = document.getElementsByClassName('KIDE_quote');
    for( var i = 0; i < cut.length; i++ ){
      cut[i].innerText = cut[i].innerText.slice(0,20) + '...';
    }
  })();

Не работает
Ответить с цитированием
  #37 (permalink)  
Старый 20.10.2021, 15:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Ubivectel
Я вставлял вот так:
моя твоя не понимай)))
Ответить с цитированием
  #38 (permalink)  
Старый 20.10.2021, 18:01
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Ты код этого чата давно лучше чем я знаешь ))))

В файле https://noviy-kovcheg.ru/components/com_kide/js/base.js строка 1196
Ответить с цитированием
  #39 (permalink)  
Старый 20.10.2021, 19:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Ubivectel,
я могу только догадываться, что ты хочешь сделать, поэтому пока подсказать не могу))).
Ответить с цитированием
  #40 (permalink)  
Старый 20.10.2021, 19:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Ubivectel,
ищи функцию которая выводит <span class="KIDE_quote"> и это не kide.onLoad.

а пока так вместо #36
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; // Берем текст из клона
                if(text.length > 20) text = text.slice(0,17) + '...'
                kide.insertSmile(`[QUOTE]${text}[/QUOTE]\n`);
        }
});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вроде видел статью, как вставить свой тег с помощью css ...но как то пробежал мимо Deff (X)HTML/CSS 2 09.07.2013 12:49
Как вставить !important в скрипт! lich Общие вопросы Javascript 2 22.05.2013 23:25
Подскажите как вставить переменную в RegExp c модификаторами Дмитрий-Solod Общие вопросы Javascript 2 16.11.2010 19:30
Mootools. Вставить html zeman Библиотеки/Тулкиты/Фреймворки 4 31.03.2009 11:24
Выделить цитату и вставить в форму за 2клика Nubi Элементы интерфейса 2 06.08.2008 12:15