RA-See More

Clicks the "see more" button on the user and game page

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         RA-See More
// @namespace    https://metalsnake.space/
// @version      0.6.5
// @description  Clicks the "see more" button on the user and game page
// @author       MetalSnake
// @match        *://retroachievements.org/*
// @icon         https://static.retroachievements.org/assets/images/favicon.webp
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    const TARGETS = ["see more"];
    let lastUrl = location.href;

    function clickButton() {
        const buttons = document.querySelectorAll("button");

        for (const button of buttons) {
            const text = button.innerText.trim().toLowerCase();

            if (TARGETS.includes(text)) {
                button.click();
                return true;
            }
        }
        return false;
    }

    function onUrlChange() {
        // kleiner Delay, damit der neue DOM aufgebaut werden kann
        setTimeout(clickButton, 50);
    }

    //// Initialer Seitenaufruf
    //clickButton();
     setTimeout(() => {
        clickButton();
    }, 100);

    // pushState / replaceState hooken
    const originalPushState = history.pushState;
    const originalReplaceState = history.replaceState;

    history.pushState = function (...args) {
        originalPushState.apply(this, args);
        if (location.href !== lastUrl) {
            lastUrl = location.href;
            onUrlChange();
        }
    };

    history.replaceState = function (...args) {
        originalReplaceState.apply(this, args);
        if (location.href !== lastUrl) {
            lastUrl = location.href;
            onUrlChange();
        }
    };

    // Browser zurück / vor
    window.addEventListener('popstate', () => {
        if (location.href !== lastUrl) {
            lastUrl = location.href;
            onUrlChange();
        }
    });

})();