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

327
Vistas
¿Cómo configurar el cursor para 'esperar' durante la ejecución del script?

Quiero establecer el estilo del cursor en 'esperar' mientras se ejecuta una función javascript prolongada, y luego restablecer la normalidad después.

Pensé que esto podría ser suficiente:

 document.body.style.cursor = 'wait'; // long scripting here document.body.style.cursor = 'auto';

Sin embargo... si muevo el cursor para señalar (por ejemplo) una <input> entonces el cursor cambia al tipo apropiado, por ejemplo, 'texto'. (Probado a través de comandos individuales en la consola).

Encontré esta pregunta similar , que establece una regla css de
html.wait, html.wait * { cursor: wait !important; }
y lo usa a través de este js:

 document.querySelector("html").classList.add("wait"); // long scripting here document.querySelector("html").classList.remove("wait");

.. pero .. no parece activarse mientras se ejecuta el script.

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

0

Ponga un retraso inactivo donde JS puede liberar la CPU de nuevo al navegador para que tenga la oportunidad de volver a pintar (o como se llame).

 const DELAY_FOR_REFRESH = 25; // milliseconds document.querySelector("html").classList.add("wait"); setTimeout( () => { // long scripting here document.querySelector("html").classList.remove("wait"); }, DELAY_FOR_REFRESH);

En pruebas limitadas, DELAY_FOR_REFRESH necesitaba ser más de al menos 20 ms; más rápido y el comportamiento observado es que el navegador no vuelve a pintar/actualizar antes de que comience la secuencia de comandos larga.

NÓTESE BIEN. el restablecimiento del cursor a 'auto' debe ocurrir al final de la funcionalidad setTimeout() (no después).


Mi modelo mental de lo que sucede aquí es algo como esto:

  1. DOM se actualiza con el cambio para configurar el cursor 'esperar'
  2. El navegador aún no ha actualizado la ventana porque el navegador no ha tenido un ciclo de CPU de repuesto
  3. JS programa el trabajo para más tarde
  4. CPU inactiva, esperando hasta la tarea programada
  5. El navegador tiene una CPU inactiva ahora, y transcurre suficiente tiempo, decide volver a pintar/lo que sea para el cambio en DOM del paso 1
  6. comienza la tarea programada
  7. la tarea programada finalmente finaliza, incluido el restablecimiento del cursor
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