Uso el siguiente código en ViolentMonkey (o GreaseKit o TamperMonkey) para actualizar una página cada 30 segundos:
setTimeout(function(){ location.reload(); }, 30*1000); Esto ha estado funcionando bien durante muchos años. Pero ahora, quiero que mi código NO actualice la página si aparece la siguiente frase: Important shizzle
(La razón por la que no quiero que se actualice en esta condición es porque ya no podré ver lo que está escrito).
No sé casi nada de Javascript. He visto tutoriales en YouTube, para tratar de aprender lo básico. A menudo busco pequeñas preguntas en Google y encuentro respuestas en Stackoverflow (gracias a todos), pero sigo siendo muy lento.
Important shizzle : si existe, finalice el script.setTimeout(function(){ location.reload(); }, 30*1000);Por desgracia, no puedo encontrar un comando Javascript elegante para finalizar abruptamente el script.
if( !document.body.textContent.includes("Important shizzle")) location.reload();El problema es que lo de arriba no lo hace cada 30 segundos, solo lo hace una vez
Puede leer la propiedad .innerText del cuerpo y luego usar String#includes para ver si su frase está presente.
Si está presente, puede return de la función para finalizar el script.
Algo como esto:
const timeout = setTimeout(function () { if (document.body.innerText.includes('Important shizzle')) return; location.reload(); }, 30 * 1000);Puedes hacerlo de esta manera:
setInterval(reload, 30*1000); function reload() { if ( isReloadOK() ) location.reload(); } function isReloadOK(){ if (document.body.textContent.includes("Important shizzle")) return false; return true; }Puede tener el tiempo de espera y puede AGREGAR un intervalo y usaré el ejemplo de lo que ya ha mostrado ... la parte más importante es clearTimeout
var timeout=setTimeout(function(){ location.reload(); }, 30*1000); var interval=setInterval(()=>{ let condition = document.body.textContent.includes("Important shizzle"); if(condition){clearTimeout(timeout); clearInterval(interval)} },0);