javascriptuserscriptsgreasemonkey-4fluid-mac-app-engine

Using Javascript, refresh a page every 30 seconds UNLESS a phrase appears


Existing code

I use the following code in ViolentMonkey (or GreaseKit or TamperMonkey) to refresh a page every 30 seconds:

setTimeout(function(){ location.reload(); }, 30*1000);

Can I make it stop?

This has been working fine for many years. But now, I want my code to NOT refresh the page if the following phrase is present: Important shizzle

(The reason I don't want it to refresh under this condition is because then I will no longer be able to see what was written.)

I am unenlightened

I know almost no Javascript. I've watched tutorials on YouTube, to try and learn the basics. I often google small questions and find answers on Stackoverflow (thanks all) - but I'm still very slow


Strategy thoughts

  1. Search for the phrase Important shizzle - if it exists then end the script.
  2. Then I'd just have my existing code: setTimeout(function(){ location.reload(); }, 30*1000);

Alas I cannot find an elegant Javascript command to abruptly end the script.

Would this work?

if( !document.body.textContent.includes("Important shizzle")) location.reload();

The problem is that the above doesn't do it every 30 seconds, it just does it once


Solution

  • You can read the .innerText property of the body, then use String#includes to see if your phrase is present.

    If it is present you can return out of the function to end the script.

    Something like this:

    const timeout = setTimeout(function () {
      if (document.body.innerText.includes('Important shizzle')) return;
      location.reload();
    }, 30 * 1000);