Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

511
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!