Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

513
Vistas
¿Cómo omitir el temporizador de JavaScript con Tampermonkey?

Estoy tratando de omitir un temporizador de cuenta regresiva de 60 segundos usando Tampermonkey. Este es el JavaScript de la fuente de la página:

 var sec = 60, sInt, s = 'Please wait %s before downloading.'; function countDown() { var f = $('#download'); if (sec < 0) { d.html('<div style="margin: 10px auto" class="center"><form action="" method="post">\ <input type="hidden" name="hash" value="REMOVED">\ <div id="REMOVED" style="width:450px;margin:5px auto"></div> \ <input type="submit" class="submit" value="Get download link" name="download"> \ </form></div>'); hcaptcha.render('REMOVED', { 'sitekey': 'REMOVED' }); clearInterval(sInt); return; } d.html(s.replace('%s', sec +' second'+ (sec != 1 ? 's' : ''))); sec--; } $(function() { sInt = setInterval(countDown, 1150); });

(algunos elementos fueron sustituidos con 'ELIMINAR' pero no deberían tener efecto, no creo)

Hasta ahora he intentado lo siguiente pero no funcionó:

 // ==/UserScript== (function() { 'use strict'; var sec = 0; })();

¿Alguna sugerencia para hacer que esto funcione? Creo que cualquiera de estos dos métodos funcionaría, pero no estoy seguro de cómo hacerlo:

  1. cambie el var sec a 0, o
  2. cambie los milisegundos de cuenta regresiva de 1150 a 0.

Entonces, ¿se puede hacer cualquiera de los dos? Si es así, ¿cómo puedes hacerlo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Problema

El problema probable es que la declaración de sec esté en un ámbito diferente al declarado en el sec del sitio web. Como resultado, no está configurando el valor en el mismo sec .

Solución

sec mutante

Deberá averiguar si es posible realizar manipulaciones en el mismo ámbito en el que el sitio web declara sec . Esto solo es realmente posible si el autor del sitio web ha declarado sec en el ámbito global. Si lo han declarado en el alcance global haciendo window.sec = -1; Deberia trabajar. De lo contrario, es posible que deba manipular el temporizador.

Manipulación de temporizadores

La manipulación de temporizadores puede ser una gran tarea. Eche un vistazo a sinonjs/fake-timers para ver qué complejidad podría estar involucrada. No creo que una solución tan compleja sea necesaria para lo que quiere aquí, así que simplemente manipulemos el temporizador secuestándolo. Lo siguiente secuestrará setInterval y hará que los intervalos se ejecuten (lo más cerca posible) de inmediato. Se debe tener cuidado al usar esto porque si hay un intervalo que nunca se borra y realiza tareas intensivas de memoria, entonces podría bloquear su navegador/computadora.

 const hijackedInterval = window.setInterval; window.setInterval = (fn) => { return hijackedInterval(fn, 0); };

A continuación se muestra una demostración. Hay dos expresiones de función invocadas inmediatamente para demostrar diferentes ámbitos. El primero realiza el secuestro de setInterval . El segundo es un contador que se incrementa cada segundo. Una vez que hayan pasado 10 segundos DONE! debe registrarse en la consola. Sin embargo, como hemos secuestrado setInterval , el registro se produce de inmediato.

 (() => { const hijackedInterval = window.setInterval; window.setInterval = (fn) => { return hijackedInterval(fn, 0); }; })(); (() => { let counter = 0; let intervalId; intervalId = setInterval(() => { if (counter === 10) { clearInterval(intervalId); console.log('DONE!'); return; } else { counter++; } }, 1000); })();

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda