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

Ubivectel 11.11.2024 13:11

Алилуйя, спасибо :dance:

Вот что получилось в итоге:

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;
        document.getElementById("kide-counter").style.display = "block";
        return;
    }
    if (kide.order == "bottom")
        kide.attr("KIDE_msgs", "scrollTop", kide.attr("KIDE_msgs", "scrollHeight"));
    else kide.attr("KIDE_msgs", "scrollTop", 0);
};

document.addEventListener("DOMContentLoaded", function () {
    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) {
            newMessageCount = 0;
            document.getElementById("kide-counter").textContent = "";
            document.getElementById("kide-counter").style.display = "none";
            return;
        }
    })
});


Но странно, при попытке вынести "kide-counter" в переменную:

let kideCounter = document.getElementById('kide-counter');

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) {
        kideCounter.textContent = newMessageCount;
        kideCounter.style.display = "block";
        return;
    }
    if (kide.order == "bottom")
        kide.attr("KIDE_msgs", "scrollTop", kide.attr("KIDE_msgs", "scrollHeight"));
    else kide.attr("KIDE_msgs", "scrollTop", 0);
};

document.addEventListener("DOMContentLoaded", function () {
    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) {
            newMessageCount = 0;
            kideCounter.textContent = "";
            kideCounter.style.display = "none";
            return;
        }
    })
});


В принципе без разницы, но очень интересно почему )


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