JavaScript 中图片顺序加载,防止页面阻塞
-
浏览器一般只能同时存在 4-8 个连接(chrome6 个),为了使得图片和页面渲染同时进行,需要保证图片加载只有一个连接使用,即顺序加载:
$(function(){ //获取页面所有图片 var images = document.images; //图片异步加载 preload(images,0); }); //图片异步加载 function preload(images, index) { index = index || 0; if (images && images.length > index) { var img = images[index]; //图片加载完成后回到函数中开始加载下一张图片 img.onload = function() { preload(images, index + 1); }; var src = "download?id="+images[index].id+"&isThumball=false"; img.src = src; } }
HTML 代码
<img src="" id="${drawingImg.id}" alt="${drawingImg.imageName }"></div>
图片下载方法 DEMO
@RequestMapping("download")
public void downFile(@RequestParam("id") String id, HttpServletResponse response) throws Exception {
List<ImageVO> list = imageService.getImageInfoBySrctypeAndDataId(SrcTypeEnum.MATERIAL.getValue(), id);
OutputStream out = new ByteArrayOutputStream();
String imageId = "";
String fileName = String.valueOf(new Date().getTime()) + ".jpg";
if (list.size() > 0) {
ImageVO image = list.get(0);
imageId = image.getImageId();
image.getName();
fileName = image.getName();
}
out = imageService.downloadImage(imageId, CompressLevel.STANDARD, true);
response.setContentType("application/octet-stream");
// 设置下载文件名
response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
OutputStream outstrm = response.getOutputStream();
outstrm.write(((ByteArrayOutputStream) out).toByteArray());
outstrm.flush();
out.close();
outstrm.close();
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于