JavaScript Cursor Change (y cambiar de nuevo)

Tengo esta página que hace algunas cosas funky de la base de datos que toma un par de segundos para procesar, y mientras tanto me gustaría establecer un"wait" cursor para que el usuario no se voltee y siga haciendo clic en el botón. He mirado la

document.body.style.cursor = "wait"

thing, el problema con esto es que solo funciona cuando el mouse está sobre el cuerpo de la página (es decir, todavía muestra un puntero normal si está sobre un botón). ¿Cómo puedo configurarlo para que, sin importar dónde se encuentre el mouse en la página, muestre un ícono de espera?

Una segunda parte de esta pregunta es, una vez que está hecho, ¿cómo lo configuro? Si lo configuro de nuevo a"default", esto parece anular cualquier"hover" los cambios de cursor que configuré en mi CSS (por lo que ya no se convierte en una mano cuando se pasa sobre un objeto especificado, etc.).

EDIT: la primera respuesta funciona bien, excepto en IE que no actualiza el cursor (por lo que nota el cambio de tipo de cursor) hasta que realmente mueva el cursor. ¿Alguna solución?

Respuestas a la pregunta(7)

Su respuesta a la pregunta