我正在创建一些 Image 对象,当我在开发工具中设置网络限制时,我看到 onload 函数在我的图像完全加载之前被调用。
我实在找不到解决办法。我的代码:
function imgObjects(data) {
for (var i in data) {
img[data[i].id] = new Image();
img[data[i].id].onload = imgReady();
img[data[i].id].name = data[i].name;
img[data[i].id].src = data[i].image;
}
}
function imgReady() {
imgReadyCount++;
console.log('Count: ', imgReadyCount);
}
如果您碰巧知道答案,请用 vanilla js 提供,谢谢!
问题是您的事件处理程序分配。
img[data[i].id].onload = imgReady();//you call the function here
相反,它应该是
img[data[i].id].onload = imgReady; //note that the handle is stored
这将避免立即调用处理程序,也不会导致将 undefined 分配给 onload 处理程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)