Infinite Scroll

Infinite scrolling for E/Ex

As of 2019-03-23. See the latest version.

// ==UserScript==
// @name         Infinite Scroll
// @author       Hauffen
// @description  Infinite scrolling for E/Ex
// @version      1.01
// @include      /https?:\/\/(e-|ex)hentai\.org\/.*/
// @require      https://code.jquery.com/jquery-3.3.1.min.js
// @namespace https://greasyfork.org/users/285675
// ==/UserScript==

(function() {
    var url = document.URL;
    var page = 0;
    var query, nextUrl;

    function newUrl() {
        if (url.split('?').length > 1) {
            if (!$.isNumeric(url.split('?')[1].substr(5,1))) {
                query = url.split('?')[1];
            }
            nextUrl = (query != null) ? "https://" + window.location.hostname + "/?page=" + (page + 1) + "&" + query : "https://" + window.location.hostname + "/?page=" + (page + 1);

            if (page > 0) {
                query = url.split('?')[1].split('&')[1];
                nextUrl = (query != null) ? "https://" + window.location.hostname + "/?page=" + (page + 1) + "&" + query : "https://" + window.location.hostname + "/?page=" + (page + 1);
            }
        } else {
           nextUrl = "https://" + window.location.hostname + "/?page=" + (page + 1);
        }
    };

    newUrl();

    $(window).on('scroll', function() {
        var scrollHeight = $(document).height();
        var scrollPosition = $(window).height() + $(window).scrollTop();
        if ((scrollHeight - scrollPosition) / scrollHeight === 0 && nextUrl != null) {
            var $content = $('<div>');
            $content.load(`${nextUrl}`, function() {
                var divs = null;
                if (document.getElementsByTagName("select")[0].selectedIndex == 3) {
                    divs = this.children[5].children[1].children[3].children;
                } else {
                    divs = this.children[4].children[1].children[3].children[0].children;
                }

                while (divs.length > 0) {
                    $('.itg').append(divs[0]);
                };
            });

            page++;
            newUrl();
        }
    });

})();