Skip to content
Advertisement

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

Advertisement

Answer

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);
User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement