Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

104
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda