代码如下:
$('#line').click(function(){
$("#photoGallery").empty();
var ids= $(this).attr("id");
$.post("getPhoto.php", {"activedr" : ids}, function(data){
$("#photoGallery").html(data);
afterLoadPhoto();
});
return false;
});本意是点击后从服务端获取图片信息展现在页面上,然后再调用afterLoadPhoto()方法来对图片进行处理(会用到ctx.getImageData方法),现在问题是由于图片比较多也比较大,执行到afterLoadPhoto()会报错(是ctx.getImageData报错,原因应该是图片还未全部加载完成),我尝试将afterLoadPhoto();改成setTimeout(loadPhoto, 7000);就不会报错(因为预留了时间用于加载完成)
请教各位高手,如何能保证所有图片加载完毕后再执行afterLoadPhoto()方法呢?
$('#line').click(function(){
$("#photoGallery").empty();
var ids= $(this).attr("id");
$.post("getPhoto.php", {"activedr" : ids}, function(data){
$("#photoGallery").html(data);
afterLoadPhoto();
});
return false;
});本意是点击后从服务端获取图片信息展现在页面上,然后再调用afterLoadPhoto()方法来对图片进行处理(会用到ctx.getImageData方法),现在问题是由于图片比较多也比较大,执行到afterLoadPhoto()会报错(是ctx.getImageData报错,原因应该是图片还未全部加载完成),我尝试将afterLoadPhoto();改成setTimeout(loadPhoto, 7000);就不会报错(因为预留了时间用于加载完成)
请教各位高手,如何能保证所有图片加载完毕后再执行afterLoadPhoto()方法呢?
解决方案 »
- JQ,AJAX的问题,为什么ie和gg都可以,就FF不响应不行了?
- js中 thisform.operation.value thisform.submit() thisform.range.value 都是什么意思?
- 想买本ext方面的书籍,求大神指导
- 求围观:js实现的具备Excel部分功能的treeListDataGrid控件
- div 内部的select 的下拉选项 失焦
- XML读取某一个片段的循环求助
- 如何在两个窗口之间传递数据?
- 带图片的下拉列表如何实现,谢谢
- 100分求助:请问如何使用js或者vbs获取本机ip以及本机局域网的外网ip??
- 如何自动跳转页面到指定的框架中
- 这段代码是什么意思啊
- 如何在下面的js语句中实现换行功能
<!DOCTYPE HTML>
<html>
<head>
<meta charset="gb2312" />
<title></title>
</head>
<body>
<script>
var img = new Image;
img.src = 'http://avatar.profile.csdn.net/7/F/3/2_xuyi1979.jpg';
img.onload = function(){
// 需要执行的程序
document.body.appendChild(img);
}
</script>
</body>
</html>
不知道 是不是这个意思?参考下new Image
指定post()方法的dataType参数为"script",getPhoto.php输出一段JS代码(这里用伪代码说明一下思路):
var ar = []; //建立一个数组对象,然后将所有需要加载的图片标识符存入这个数组
ar.push('img1');
ar.push('img2');
....//再循环加载所有的图片
var obj = document.createElement('img');
obj.src = 'img1';
obj.onload = function() {
//删除ar数组中对应的元素
//将自身添加到文档树中
//判断ar数组的长度,长度为0时说明全部图片已经加载完成,执行afterLoadPhoto()
}
多个图片跟使用img对象的onload有什么关系呢?不使用onload你怎么能知道所有图片都已加载呢?
如果你能知道共有多少图片的话,可以用一个计数器统计有多少个图片加载完了,如果都加载完了,就调用afterLoadPhote。像这样(只是示意,懒得查jquery的文档了):
var total = 10; // 共有10个图片$('img').onload(function() {
total --;
if (total == 0) {
afterLoadPhoto();
}
});