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

112
Views
¿Cómo evitar la prohibición de setTimeout desde el navegador?

Bueno, parece que mi secuencia de comandos recibe algún tipo de "prohibición" del navegador cuando intenta ejecutar algún proceso en el bucle. El script se ejecuta en el iframe, se carga desde otro dominio y es visible.

Obtiene una prohibición solo cuando se ejecuta dentro del iframe.

El código se ve así:

 app_cycle() { let self = this; // Making some fast things here (1-2 ms long) // Calculate the delay based on the real time value from (new Date()) // Resulting "dt" is always between 5ms and 37ms. The ideal value is 20ms // Always remove old timer to avoid consecutive timers if (this.tickTimer) { clearTimeout(this.tickTimer); this.tickTimer = null; } this.tickTimer = setTimeout(() => { self.app_cycle(); }, dt); }

Entonces, como puede ver, no estoy haciendo nada especial, solo el método app_cycle que se ejecuta cada 20 ms (es relativamente estable porque estoy recalculando dt de acuerdo con las desviaciones externas para hacer que la frecuencia promedio sea de 50 Hz).

El problema es: mi aplicación se ejecuta muy lentamente al principio. Inmediatamente después de cargar la página, los retrasos de setTimeout para 1000ms no dependen del valor dt calculado.

Esta situación dura 65 segundos y luego mi aplicación se ejecuta normalmente.

Si detengo la aplicación cerrando un iframe con ella y la vuelvo a ejecutar (sin volver a cargar la página principal principal), ya no se producen retrasos de 65 segundos.

Después de recargar la página principal, obtengo los mismos retrasos.

Parece algo como una "prohibición" del navegador (he probado en Chrome y Firefox, mismo resultado) y la pregunta CÓMO evitar esa prohibición.

¡Muchos gracias!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Bien, hubo una prohibición en el iframe. Chrome bloquea los iframes ocultos que provienen de otros dominios (dominios cruzados) siempre. En mi caso, el iframe es perfectamente visible, sin embargo, el nodo principal (div) se configuró como "ancho: 100%" y "alto: automático", por lo que Chrome reconoció el iframe secundario como "iframe no visible". Creo que es un error de Chrome, pero en mi caso, configurar "min-height: 10px" para el div principal solucionó perfectamente el problema.

Con suerte, esta solución (pasé 3 días para encontrarla) ayudará a cualquiera y ahorrará algo de tiempo.

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!