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

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

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