Search code examples
javascriptgreasemonkeytampermonkeyuserscripts

TamperMonkey JS UserScript bypassing a waiting time


Trying to write a userscript for TamperMonkey to be running in browser for bypassing a waiting time as a training. Here is the script used in that page:

var timeout;
$(document).ready(function() {
    $('#countdown').each(function(i, e) {
        if (timeout) return;

        timeout = setTimeout(tick, 1000);

        function tick() {
            console.log('Tick');
            var remaining = parseInt($(e).find(".seconds").text()) - 1;
            if (remaining <= 0) {
                $(e).css('visibility', 'hidden');
            } else {
                $(e).find(".seconds").text(remaining.toString());
                setTimeout(tick, 1000);
            }
        }
    });
});

JQuery is enabled in my script and is working, I was able to disable/enable some web elements, here the question is just about the 'waiting time'.

Is it possible to bypass it?

Do I/you need any extra information regarding it?

I tried some pieces of code, still with no success:

for example:

// Tried the below variables with a hope to override them in therms they exists.
// wasn't sure if even the usage or approach be totally correct.
let seconds = 0;
let remaining = 0;
let tick = 1;
let timeout = 60;

$(document).ready(function () {
    // altered some elements.

    seconds = 0;
    remaining = 0;
    tick = 1;
    timeout = 60;
});

Solution

  • The variables you declare in your userscript are not referenced at all in the page's script, so I don't know what you're expecting the userscript to affect.

    Since the page's script retrieves the seconds remaining from a .seconds element, you can modify that element to remove the timeout:

    document.querySelector('.seconds').textContent = '1';
    

    and that's it. This way you won't have to wait for it to count down, it'll finish immediately.