Greasy Fork

Greasy Fork is available in English.

Masiro: Auto Load More Notifications

Load more notifications automatically when scrolled to the bottom of the notifications list.

当前为 2024-02-15 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name               Masiro: Auto Load More Notifications
// @name:zh-TW         真白萌:自動載入更多通知
// @description        Load more notifications automatically when scrolled to the bottom of the notifications list.
// @description:zh-TW  捲動到通知列表底部時自動載入更多通知。
// @icon               https://icons.duckduckgo.com/ip3/masiro.me.ico
// @author             Jason Kwok
// @namespace          https://jasonhk.dev/
// @version            1.0.0
// @license            MIT
// @match              https://masiro.me/admin
// @match              https://masiro.me/admin/*
// @exclude-match      https://masiro.me/admin/auth/*
// @run-at             document-end
// @grant              none
// ==/UserScript==

const observer = new MutationObserver((records) =>
{
    for (const record of records)
    {
        for (const node of record.addedNodes)
        {
            if (node.classList.contains("message-frame"))
            {
                const moreButton = node.querySelector(".message-footer");
                const messagesList = node.querySelector(".message-content");

                messagesList.addEventListener("scroll", handleScroll);
                handleScroll();

                function handleScroll()
                {
                    if ((messagesList.scrollTop + messagesList.clientHeight) >= (messagesList.scrollHeight - 20))
                    {
                        if (moreButton.style.display === "none")
                        {
                            messagesList.removeEventListener("scroll", handleScroll);
                        }
                        else
                        {
                            moreButton.click();
                        }
                    }
                }
            }
        }
    }
});

observer.observe(document.querySelector(".navbar-custom-menu .navbar-nav li:first-child > div"), { childList: true });