Mid*_*hat 12 javascript progress
我有一些javascript函数需要大约1至3秒.(一些循环或mooML模板代码.)
在此期间,浏览器刚冻结.我尝试在开始操作之前显示"加载"动画(gif图像)并在之后隐藏它.但它只是不起作用.浏览器在渲染图像之前会冻结,并在函数结束时立即隐藏它.
在进入javascript执行之前,我可以做些什么来告诉浏览器更新屏幕.,像Application.DoEvents或后台工作线程.
所以有关如何显示javascript执行进度的任何意见/建议.我的主要目标浏览器是IE6,但也适用于所有最新的浏览器
Sea*_*sey 19
这是因为IE6中的所有内容都在同一个线程中执行 - 甚至是动画gif.
确保在启动之前显示gif的唯一方法是分离执行.
function longRunningProcess(){
....
hideGif();
}
displayGif();
window.setTimeout(longRunningProcess, 0);
Run Code Online (Sandbox Code Playgroud)
但是这仍然会在longRunningProcess执行时冻结浏览器.
为了允许交互,您必须将代码分解为更小的片段,也许就像这样
var process = {
steps: [
function(){
// step 1
// display gif
},
function(){
// step 2
},
function(){
// step 3
},
function(){
// step 4
// hide gif
}
],
index: 0,
nextStep: function(){
this.steps[this.index++]();
if (this.index != this.steps.length) {
var me = this;
window.setTimeout(function(){
me.nextStep();
}, 0);
}
}
};
process.nextStep();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7541 次 |
| 最近记录: |