我在做一个上传文件的时候有这样的一个功能:在页面上是原始的form表单上传,点击浏览按钮选择文件后,点击提交按钮,就会执行$("form").submit(),在这个函数中先显示一个lightbox提示框,这个提示框由几张背景图片构成,是在css 的background属性中设置的,弹出提示框后,return true,页面就开始上传文件。但是存在下面的问题:点击弹出框的时候,由于这个弹出框是lightbox的插件,背景包含3张图片,假设为a.png, b.png, c.png。那么浏览器会发出三个get请求去服务器下载这三张图片
get a.png
get b.png
get c.png
同时jquery.submit返回true,开始上传文件,发的是post 请求。
web会处理这三个请求,正确的顺序就是先收到a.png, b.png,c.png,post。
但是在火狐下,会出现收到a.png, post,b.png, c.png,在处理a.png后,就处理post请求了,没有处理到b.png,c.png,导致弹出窗口显示不完整。
大概代码结果如下:
原有代码:
$("form").submit(function(){
showLightbox(); // 这里会发起get请求去下载a.png, b.png, c.png
return true;
})
修改代码:
$("form").submit(function(){
showLightbox(); // 这里会发起get请求去下载a.png, b.png, c.png
for(var i=0; i < 99999999; i++){;} // 模拟sleep操作,先保证a.png,b.png,c.png的请求能被web处理。
return true; // 最后返回,让浏览器去上传文件
})
修改后在Firefox下没有问题的,但是这种方式在IE8下直接弹出那个影响性能的提示框了。
请问有人有解决方式没?
get a.png
get b.png
get c.png
同时jquery.submit返回true,开始上传文件,发的是post 请求。
web会处理这三个请求,正确的顺序就是先收到a.png, b.png,c.png,post。
但是在火狐下,会出现收到a.png, post,b.png, c.png,在处理a.png后,就处理post请求了,没有处理到b.png,c.png,导致弹出窗口显示不完整。
大概代码结果如下:
原有代码:
$("form").submit(function(){
showLightbox(); // 这里会发起get请求去下载a.png, b.png, c.png
return true;
})
修改代码:
$("form").submit(function(){
showLightbox(); // 这里会发起get请求去下载a.png, b.png, c.png
for(var i=0; i < 99999999; i++){;} // 模拟sleep操作,先保证a.png,b.png,c.png的请求能被web处理。
return true; // 最后返回,让浏览器去上传文件
})
修改后在Firefox下没有问题的,但是这种方式在IE8下直接弹出那个影响性能的提示框了。
请问有人有解决方式没?
然后你3个图片的onload事件都指向一个函数比如 bvar b =function(){
i--;
if(i==0)
{
submit
}
}
同上。已经有缓存了,但是一样会发请求,只有发出请求了,webserver回复http 304,浏览器才会使用缓存的图片。但是如果能强制让浏览器使用缓存,连get请求都不发出来的话,应该能解决问题。