var progress;
var current_loading = 0;
var loaded_size = 0;
var loaded_num = 0;
//控制最大并发数
var max_sessions = 8;
var live_sessions = 0;
//记录请求对象重载次数
var reload_times = new Array();
var stopped = false;
//set up ajax option
$.ajaxSetup({
type: 'GET',
//异步调用
async: true,
//发送之前执行
beforeSend: function(XMLHttpRequest){before_ajax_send(XMLHttpRequest);},
//允许从浏览器缓存读取
cache: true,
//请求完成时执行(包含成功失败)
complete: function(XMLHttpRequest, textStatus){ajax_complete(XMLHttpRequest, textStatus);},
//错误时执行
error: function(XMLHttpRequest, textStatus, errorThrown){ajax_error(XMLHttpRequest, textStatus, errorThrown);},
//是否触发全局 AJAX 事件
global: true,
//是否仅在服务器数据改变时获取新数据
ifModified: false,
//是否将发送的数据将被转换为对象
processData: false,
//成功后执行
success: function(data, textStatus) {ajax_success(data, textStatus);},
//超时设置:10秒
timeout: 10000
});
function before_ajax_send(XMLHttpRequest)
{
}
function ajax_complete(XMLHttpRequest, textStatus)
{
if(textStatus == 'success'){
//processbar
loaded_size += XMLHttpRequest.responseText.length;
progress.style.width = progress.innerHTML = Math.floor(loaded_size / total_size * 100) + '%';
//add up to the loaded
++ loaded_num;
-- live_sessions;
//all loaded?
if (loaded_num >= preloader_queue.length)
{
location.href = '?_task=mail';
return true;
}else{
if(preloader_queue[current_loading] != undefined){
var url = preloader_queue[current_loading].src;
$.get(url, null ,null,'text');
++ current_loading;
}
}
}
}
function ajax_error(XMLHttpRequest, textStatus, e)
{
}
function ajax_success(data, textStatus)
{
}
window.onload = function ()
{
progress = document.getElementById('progress');
//设定错误处理,重新加载3次
$(document).ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError) {
if( reload_times[ajaxOptions['url']] == undefined ){
reload_times[ajaxOptions['url']] = 0;
}
if( reload_times[ajaxOptions['url']]++ < 3 ){
$.get(ajaxOptions['url'], null ,null,'text');
}else{
if(!stopped){
stopped = true;
alert("Loading failed. Please try it again later!");
}
}
});
//轮询加载至最大并发数
while(preloader_queue[current_loading] != undefined && live_sessions < max_sessions){
var url = preloader_queue[current_loading].src;
$.get(url, null ,null,'text');
++ current_loading;
++ live_sessions;
}
}
并发preloader加载条
最新推荐文章于 2023-02-16 20:40:22 发布