Используя Javascript, обновляйте страницу каждые 30 секунд, ЕСЛИ НЕ появляется фраза

Существующий код

Я использую следующий код в ViolentMonkey (или GreaseKit или TamperMonkey) для обновления страницы каждые 30 секунд:

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

Могу я остановить это?

Это прекрасно работает уже много лет. Но теперь я хочу, чтобы мой код НЕ обновлял страницу, если присутствует следующая фраза:

(Причина, по которой я не хочу, чтобы он обновлялся при этом условии, состоит в том, что тогда я больше не смогу видеть, что было написано.)

Я непросвещенный

Я почти не знаю Javascript. Я смотрел обучающие программы на YouTube, чтобы попытаться изучить основы. Я часто гуглил небольшие вопросы и нахожу ответы на Stackoverflow (спасибо всем), но я все еще очень медленный


Стратегические мысли

  1. Найдите фразу - если он существует, завершите скрипт.
  2. Тогда у меня будет только мой существующий код: setTimeout(function(){ location.reload(); }, 30*1000);

Увы, я не могу найти элегантную команду Javascript для внезапного завершения скрипта.

Это сработает?

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

Проблема в том, что вышеупомянутое не делает это каждые 30 секунд, а просто делает это один раз.

3 ответа

Вы можете прочитать .innerText свойство тела, затем используйте String#includes чтобы увидеть, присутствует ли ваша фраза.

Если он присутствует, вы можете return вне функции, чтобы завершить сценарий.

Что-то вроде этого:

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

Сделать это можно так:

      setInterval(reload, 30*1000);

function reload() {
    if ( isReloadOK() ) location.reload();
}

function isReloadOK(){
    if (document.body.textContent.includes("Important shizzle")) return false;
    return true;
}

У вас может быть тайм-аут, и вы можете ДОБАВИТЬ интервал, и я буду использовать пример из того, что вы уже показали ... самая важная часть - это clearTimeout

      var timeout=setTimeout(function(){ location.reload(); }, 30*1000);
setInterval(()=>{
  if( document.body.textContent.includes("Important shizzle") ) clearTimeout(timeout);
})
Другие вопросы по тегам