Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Запретить автопрокрутку при условии (https://javascript.ru/forum/misc/84284-zapretit-avtoprokrutku-pri-uslovii.html)

рони 28.07.2022 23:40

Ubivectel,
ок! if(scroll < -100) -100 можно подстроить, если нужно, от -50 до -300

Ubivectel 28.07.2022 23:59

Я правильно понимаю, что это диапазон прокрутки с которого начнет работать условие? Т.е. если прокручено меньше -50 / -300 то автопрокрутка будет срабатывать?

рони 29.07.2022 00:34

Ubivectel,
да

Ubivectel 10.11.2024 08:43

Привет мир!

Взбрела в голову мысль добавить счетчик сообщений, если скролл не = 0, сделал так:

kide.ajustar_scroll = function () {
    if (kide.scrolling) return;
    let scroll = kide.attr("KIDE_msgs", "scrollTop") - (kide.attr("KIDE_msgs", "scrollHeight") - kide.attr("KIDE_msgs", "clientHeight"));
   
    if (scroll < -300) {
        document.getElementById('kide-counter').textContent = newMessageCount;
        return;
    }
    if (kide.order == "bottom")
        kide.attr("KIDE_msgs", "scrollTop", kide.attr("KIDE_msgs", "scrollHeight"));
    else kide.attr("KIDE_msgs", "scrollTop", 0);
};


Работает и считает все хорошо, хоть убей не могу заставить код делать
document.getElementById('kide-counter').textContent = '';

Когда пользователь возвращает прокрутку блока id="KIDE_msgs" вниз ( :help:

рони 10.11.2024 12:06

Ubivectel,
как вариант
если находясь внизу, отправить сообщение, то счётчик обнулится.
kide.ajustar_scroll = function() {
            if (kide.scrolling) return;
            let scroll = kide.attr("KIDE_msgs", "scrollTop") - (kide.attr("KIDE_msgs", "scrollHeight") - kide.attr("KIDE_msgs", "clientHeight"));
            if (scroll < -300) {
                document.getElementById('kide-counter').textContent = newMessageCount;
                return;
            }
            if (kide.order == "bottom") {
                kide.attr("KIDE_msgs", "scrollTop", kide.attr("KIDE_msgs", "scrollHeight"));
                newMessageCount = 0;
                document.getElementById('kide-counter').textContent = '';
            } else kide.attr("KIDE_msgs", "scrollTop", 0);
        };

Ubivectel 10.11.2024 14:16

Что бы он обнулялся после отправки нового сообщения было довольно легко, я пытался именно добиться что бы он обнулялся сразу при прокрутке блока вниз. Чем и сломал моск не только себе, но и GPT ) Ну не верю, что нет решения для js-всемогущего )

рони 10.11.2024 20:08

Цитата:

Сообщение от Ubivectel
при прокрутке блока вниз

обработчик на прокрутку колёсиком мыши
document.querySelector("#KIDE_msgs").addEventListener("scroll", function() {
            let scroll = kide.attr("KIDE_msgs", "scrollTop") - (kide.attr("KIDE_msgs", "scrollHeight") - kide.attr("KIDE_msgs", "clientHeight"));
            if (kide.scrolling) return;
            if (scroll > -3) {
                document.getElementById("kide-counter").textContent = "";
                return;
            }
        })

Ubivectel 10.11.2024 21:09

Неа, какую-то подобную конструкцию уже писал, но нет. Посмотреть тут: https://noviy-kovcheg.ru/chatФайл JS вот: https://noviy-kovcheg.ru/components/...top/js/kide.js

Ubivectel 10.11.2024 21:54

Консоль ругается на это:
document.querySelector("#KIDE_msgs").addEventListener("scroll", function()

рони 10.11.2024 23:21

Цитата:

Сообщение от Ubivectel
Консоль ругается на это:

оберни в
document.addEventListener("DOMContentLoaded", function()
{...});


Часовой пояс GMT +3, время: 11:04.