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

105
Vistas
¿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 Respuestas
Responde la pregunta

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 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