Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: DHTML
Expertise: Beginner
Dec 23, 1998

DHTML Window Redraw

Question:
Is there any way to control the redrawing/repainting of the open window/document? Specifically, I have to change page elements (labels, cursor style) before calling some time intensive task. I have successfully implemented changes to the cursor style but it doesn't always change the display of the mouse cursor immediately.

Answer:
Whenever a script is evaluated (at least in Internet Explorer), the parsing agent takes over and handles all of the manipulation in a significant number of cases. For this reason, you can't use synchronous calls to animate a screen--the script has to be interpreted first, and the result gets displayed only after the script terminates. One way around this is to perform the changing call asynchronously.

For example, suppose that I wanted to turn the cursor to an hourglass wait state before beginning some kind of a lengthy operation. The logical code to do this would be:

document.body.style.cursor="wait";
for (var index=0;index<10000
This code, however, doesn't change the cursor, because the scripting engine currently has control of the action. However, you can fork it (to use an old Unix term) so that it exists on its own processing thread:
window.setTimeout("document.body.style.cursor='wait'", 0, "JavaScript")
for (var index=0;index<10000
The setTimeout call essentially invokes a new thread, which will execute independently of the rest of the script. By setting the time to 0 ms, the call will be made automatically.  Since the last step in the action is to set the cursor style back, the focus will return to the browser and the cursor will get updated back to its default value. 
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap