Mangalib Infinite Scroll

Infinite scroll on chat mangalib.me

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Mangalib Infinite Scroll
// @version      0.7.3
// @description  Infinite scroll on chat mangalib.me
// @author       reiwsan
// @match        https://mangalib.me/*
// @match        https://ranobelib.me/*
// @namespace    https://greasyfork.org/users/221048
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    const preloadPos = 321;

    /**
     * @param {Element} chatMore
     * @returns {void}
     */
    const historyAutoload = function(chatMore) {
        let chatItems = document.querySelector('.chat__items'),
            historyLoad = false;

        /**
         * @param {Element} chatMore
         * @returns {boolean}
         */
        const chatMoreClick = function(chatMore) {
            chatMore.click();
            return true;
        }

        chatItems.addEventListener('scroll', _ => {
            let scrollPos = ((chatItems.scrollHeight - chatItems.clientHeight) - chatItems.scrollTop),
                scrollPreload = (scrollPos <= preloadPos);

            historyLoad = (scrollPreload && !historyLoad) ?
                chatMoreClick(chatMore) : scrollPreload;
        });
    }

    if (typeof _CHAT_INSTANCE !== 'undefined') {
        const chatInitInterval = setInterval(() => {
            let chatMore = document.querySelector('.chat__more');

            if (chatMore) {
                clearInterval(chatInitInterval);
                historyAutoload(chatMore);
            }
        }, 50);
    }
})();