I have been searching but can't find anything relevant to my issue. I need to change the cursor when a user initiates an action so they don't shotgun the request.
The statement to change the cursor is simple enough, but I can't get it to fall into sequence correctly. My cursor doesn't change until the function completes. I can see this by commenting out the statement to return the cursor to normal behavior.
I want the cursor to go to wait and stay that way until the call tot he ajax function is done, then return to normal.
// wrapper to set wait cursor during ajax calls (the cursor change doesn't work, btw -- leaving it here so it can be fixed)
function loadForm(){
setTimeout("document.getElementsByTagName('BODY')[0].style.cursor = 'wait'",1);
populateReadPage();
setTimeout("document.getElementsByTagName('BODY')[0].style.cursor = 'auto'", 1);
}
// configure calls to populate entire page: first string identifies the call, the second string identifies the custom function to implement
function populateReadPage(){
setScreenObject("noncom","grid1");
setScreenObject("cur_cert","grid2");
setScreenObject("cur_hecm","grid3");
setScreenObject("prev_cert","grid4");
setScreenObject("prev_hecm","grid5");
}
Javascript execution is single-threaded, so this is what happens when you execute the loadForm function:
setTimeout(Action1,1)
: Action1 is enqueued to be executed when the current (main) execution line finishespopulateReadPage()
: This method is executedsetTimeout(Action2,1)
: Again, Action2 is enqueued to be executed when the current (main) execution line finishes.Action1
is executedAction2
is executedUPDATE: After some research, it seems that the body style changes need a "pause" to be set, so I made it work with the following code:
function loadForm(){
document.body.style.cursor = 'wait'; //sets the cursor to wait
setTimeout(()=> { //enqueues the tasks
populateReadPage();
document.body.style.cursor = 'auto'; //once all is done, sets the regular pointer
});
}
Just one thing: the cursor does not change until it moves, not sure why