From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

if (!infiniscroll) {

    var infiniscroll = {};

    // script that would add infinite scrolling to Special:Contribs, Special:Log, Special:NewPages, and a few other pages

    infiniscroll.urlparams = (new URL(location.href)).searchParams;

    infiniscroll.loading = false;

    $(document).ready(function () {

        if (!infiniscroll.urlparams.get("noinfiniscroll")) {

            var $ul = $('.mw-pager-navigation-bar').parent().children('ul').eq(0);

            $ul.before('<section class="mw-pager-body"></section>');

            $('.mw-pager-body').eq(0).append($ul);

            if ($('.mw-pager-body').length > 0 && (mw.config.get('wgAction') == 'history' || mw.config.get('wgNamespaceNumber') < 0)) {

                var start = function () {

                    $.get(location.href).done(function (result) {

                        $(".mw-pager-body").eq(0).html($(result).find(".mw-pager-body").eq(0).html());

                        $("#mw-content-text").prepend('<div class="mw-message-box-warning mw-message-box warningbox">Infinite scrolling enabled. Press &#9632; to disable.</div>');

                    }).fail(function () {

                        start();

                    });

                };

                start();

                infiniscroll.load = function () {

                    if (!infiniscroll.loading) {

                        infiniscroll.loading = true;

                        var oldnexthtml = $(".mw-nextlink").eq(1).html();

                        var oldnexttext = $(".mw-nextlink").eq(1).text();

                        var nextlink = $(".mw-nextlink").eq(1).attr("href");

                        if (nextlink) {

                            $(".mw-nextlink").eq(1).html('Loading...');

                            var oldselected = 0, 0];

                            $(".mw-pager-body").find("li").each(function (i) {

                                if ($(this).find('input').eq(0).prop("checked")) {

                                    oldselected0 = i;

                                }

                                if ($(this).find('input').eq(1).prop("checked")) {

                                    oldselected1 = i;

                                }

                            });

                            $.get(nextlink).done(function (result) {

                                $(result).find(".mw-pager-body").find("li").eq(0).find("input").eq(0).attr("style", null).prop("disabled", false);

					            var $ul = $(result).find('.mw-pager-navigation-bar').parent().children('ul').eq(0);

					            $ul.before('<section class="mw-pager-body"></section>');

					            $(result).find('.mw-pager-body').eq(0).append($ul);

					            console.log($(result).find('.mw-pager-body').eq(0).html());

                                $(".mw-pager-body").eq(0).append($(result).find(".mw-pager-body").eq(0).html());

                                $(".mw-pager-body").find("li").each(function () {

                                    if ($(this).find("input").eq(0).attr("style") || $(this).find("input").eq(0).attr("id")) {

                                        $(this).find("input").eq(0).attr("style", null);

                                        $(this).find("input").eq(0).attr("id", null);

                                        $(this).find("input").eq(0).prop("disabled", false);

                                    }

                                });

                                $(".mw-pager-body").find("li").eq(0).find("input").eq(0).attr("style", "visibility:hidden;");

                                $(".mw-pager-body").find("li").eq(oldselected1]).find("input").eq(1).click();

                                $(".mw-pager-body").find("li").eq(oldselected0]).find("input").eq(0).click();

                                if ($(result).find("a.mw-nextlink").eq(1).text()) {

                                    $(".mw-nextlink").eq(1).html(oldnexthtml);

                                    $(".mw-nextlink").eq(1).attr("href", $(result).find(".mw-nextlink").eq(1).attr("href"));

                                } else {

                                    document.getElementsByClassName("mw-nextlink")[1].outerHTML = oldnexttext;

                                    infiniscroll.loadHistory = function () {

                                        return false;

                                    };

                                }

                                $('.mw-pager-body').find('.mw-history-compareselectedversions').remove();

                                infiniscroll.loading = false;

                            }).fail(function () {

                                $(".mw-nextlink").eq(1).html(oldnexthtml);

                                infiniscroll.loading = false;

                            });

                        }

                    }

                };

                $(".mw-nextlink").eq(0).after(' | <a href="' + location.pathname + "?" + (function () { var a = (new URL(location.href)).searchParams; a.set("noinfiniscroll", 1); return a.toString(); })() + '">&#9632;</a>');

                $(".mw-nextlink").eq(1).click(function (e) {

                    e.preventDefault();

                    infiniscroll.load();

                });

                window.onscroll = function (ev) {

                    if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {

                        infiniscroll.load();

                    }

                };

                infiniscroll.load();

            } else {

                infiniscroll.loadSpecialPage = function () {

                    // user contributions

                    if ($(".mw-contributions-list, .mw-pager-body").length > 0) {

                        $("#mw-content-text").prepend('<div class="mw-message-box-warning mw-message-box warningbox">Infinite scrolling enabled. Press &#9632; to disable.</div>');

                        infiniscroll.loadContribs = function () {

                            if (!infiniscroll.loading) {

                                infiniscroll.loading = true;

                                var oldnexthtml = $(".mw-nextlink").eq(1).html();

                                var oldnexttext = $(".mw-nextlink").eq(1).text();

                                var nextlink = $(".mw-nextlink").eq(1).attr("href");

                                if (nextlink) {

                                    $(".mw-nextlink").eq(1).html('Loading...');

                                    $.get(nextlink).done(function (result) {

                                        $(".mw-contributions-list, .mw-pager-body").eq(0).append($(result).find(".mw-contributions-list, .mw-pager-body").eq(0).html());

                                        if ($(result).find("a.mw-nextlink").eq(1).text()) {

                                            $(".mw-nextlink").eq(1).html(oldnexthtml);

                                            $(".mw-nextlink").eq(1).attr("href", $(result).find(".mw-nextlink").eq(1).attr("href"));

                                        } else {

                                            document.getElementsByClassName("mw-nextlink")[1].outerHTML = oldnexttext;

                                            infiniscroll.loadContribs = function () {

                                                return false;

                                            };

                                        }

                                        infiniscroll.loading = false;

                                    }).fail(function () {

                                        $(".mw-nextlink").eq(1).html(oldnexthtml);

                                        infiniscroll.loading = false;

                                    });

                                }

                            }

                        };

                        $(".mw-nextlink").eq(0).after(' | <a href="' + location.pathname + "?" + (function () { var a = (new URL(location.href)).searchParams; a.set("noinfiniscroll", 1); return a.toString(); })() + '">&#9632;</a>');

                        $(".mw-nextlink").eq(1).click(function (e) {

                            e.preventDefault();

                            infiniscroll.loadContribs();

                        });

                        window.onscroll = function (ev) {

                            if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {

                                infiniscroll.loadContribs();

                            }

                        };

                    }

                    // log pages

                    else if ($(".mw-logevent-loglines, .mw-pager-body").length > 0) {

                        $("#mw-content-text").prepend('<div class="mw-message-box-warning mw-message-box warningbox">Infinite scrolling enabled. Press &#9632; to disable.</div>');

                        infiniscroll.loadLogs = function () {

                            if (!infiniscroll.loading) {

                                infiniscroll.loading = true;

                                var oldnexthtml = $(".mw-nextlink").eq(1).html();

                                var oldnexttext = $(".mw-nextlink").eq(1).text();

                                var nextlink = $(".mw-nextlink").eq(1).attr("href");

                                if (nextlink) {

                                    $(".mw-nextlink").eq(1).html('Loading...');

                                    $.get(nextlink).done(function (result) {

                                        $(".mw-logevent-loglines, .mw-pager-body").eq(0).append($(result).find(".mw-logevent-loglines, .mw-pager-body").eq(0).html());

                                        if ($(result).find("a.mw-nextlink").eq(1).text()) {

                                            $(".mw-nextlink").eq(1).html(oldnexthtml);

                                            $(".mw-nextlink").eq(1).attr("href", $(result).find(".mw-nextlink").eq(1).attr("href"));

                                        } else {

                                            document.getElementsByClassName("mw-nextlink")[1].outerHTML = oldnexttext;

                                            infiniscroll.loadLogs = function () {

                                                return false;

                                            };

                                        }

                                        infiniscroll.loading = false;

                                    }).fail(function () {

                                        $(".mw-nextlink").eq(1).html(oldnexthtml);

                                        infiniscroll.loading = false;

                                    });

                                }

                            }

                        };

                        $(".mw-nextlink").eq(0).after(' | <a href="' + location.pathname + "?" + (function () { var a = (new URL(location.href)).searchParams; a.set("noinfiniscroll", 1); return a.toString(); })() + '">&#9632;</a>');

                        $(".mw-nextlink").eq(1).click(function (e) {

                            e.preventDefault();

                            infiniscroll.loadLogs();

                        });

                        window.onscroll = function (ev) {

                            if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {

                                infiniscroll.loadLogs();

                            }

                        };

                    }

                };

                infiniscroll.loadHistoryPage = function () {

                    var start = function () {

                        $.get(location.href).done(function (result) {

                            $("#pagehistory, .mw-pager-body").eq(0).html($(result).find("#pagehistory, .mw-pager-body").eq(0).html());

                            $("#mw-content-text").prepend('<div class="mw-message-box-warning mw-message-box warningbox">Infinite scrolling enabled. Press &#9632; to disable.</div>');

                        }).fail(function () {

                            start();

                        });

                    };

                    start();

                    infiniscroll.loadHistory = function () {

                        if (!infiniscroll.loading) {

                            infiniscroll.loading = true;

                            var oldnexthtml = $(".mw-nextlink").eq(1).html();

                            var oldnexttext = $(".mw-nextlink").eq(1).text();

                            var nextlink = $(".mw-nextlink").eq(1).attr("href");

                            if (nextlink) {

                                $(".mw-nextlink").eq(1).html('Loading...');

                                var oldselected = 0, 0];

                                $("#pagehistory, .mw-pager-body").find("li").each(function (i) {

                                    if ($(this).find('input').eq(0).prop("checked")) {

                                        oldselected0 = i;

                                    }

                                    if ($(this).find('input').eq(1).prop("checked")) {

                                        oldselected1 = i;

                                    }

                                });

                                $.get(nextlink).done(function (result) {

                                    $(result).find("#pagehistory, .mw-pager-body").find("li").eq(0).find("input").eq(0).attr("style", null).prop("disabled", false);

                                    $("#pagehistory, .mw-pager-body").eq(0).append($(result).find("#pagehistory, .mw-pager-body").eq(0).html());

                                    $("#pagehistory, .mw-pager-body").find("li").each(function () {

                                        if ($(this).find("input").eq(0).attr("style") || $(this).find("input").eq(0).attr("id")) {

                                            $(this).find("input").eq(0).attr("style", null);

                                            $(this).find("input").eq(0).attr("id", null);

                                            $(this).find("input").eq(0).prop("disabled", false);

                                        }

                                    });

                                    $("#pagehistory, .mw-pager-body").find("li").eq(0).find("input").eq(0).attr("style", "visibility:hidden;");

                                    $("#pagehistory, .mw-pager-body").find("li").eq(oldselected1]).find("input").eq(1).click();

                                    $("#pagehistory, .mw-pager-body").find("li").eq(oldselected0]).find("input").eq(0).click();

                                    if ($(result).find("a.mw-nextlink").eq(1).text()) {

                                        $(".mw-nextlink").eq(1).html(oldnexthtml);

                                        $(".mw-nextlink").eq(1).attr("href", $(result).find(".mw-nextlink").eq(1).attr("href"));

                                    } else {

                                        document.getElementsByClassName("mw-nextlink")[1].outerHTML = oldnexttext;

                                        infiniscroll.loadHistory = function () {

                                            return false;

                                        };

                                    }

                                    $('#pagehistory, .mw-pager-body').find('.mw-history-compareselectedversions').remove();

                                    infiniscroll.loading = false;

                                }).fail(function () {

                                    $(".mw-nextlink").eq(1).html(oldnexthtml);

                                    infiniscroll.loading = false;

                                });

                            }

                        }

                    };

                    $(".mw-nextlink").eq(0).after(' | <a href="' + location.pathname + "?" + (function () { var a = (new URL(location.href)).searchParams; a.set("noinfiniscroll", 1); return a.toString(); })() + '">&#9632;</a>');

                    $(".mw-nextlink").eq(1).click(function (e) {

                        e.preventDefault();

                        infiniscroll.loadHistory();

                    });

                    window.onscroll = function (ev) {

                        if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {

                            infiniscroll.loadHistory();

                        }

                    };

                };

                $(document).ready(function () {

                    if (!infiniscroll.urlparams.get("noinfiniscroll")) {

                        if (mw.config.get("wgNamespaceNumber") == -1) {

                            infiniscroll.loadSpecialPage();

                        } else if (mw.config.get("wgAction") == "history") {

                            infiniscroll.loadHistoryPage();

                        }

                    }

                });

            }

        }

    });

}