我正在进行 Ajax 调用,它会返回一些信息,包括图像路径。
我在我的 HTML 中准备了所有这些信息,这些信息将显示为一种弹出窗口。我只是将 by popup div 的可见性从隐藏切换为可见。
要设置弹出式 div 的位置,我必须根据图像的高度进行计算。因此,我必须等待图像加载才能知道其尺寸,然后才能设置位置并将可见性切换为可见。
我尝试了递归、setTimeout、完整的 img 属性、while 循环……但没有成功。
那么,我该怎么做呢?也许我应该在我的 Ajax 调用中返回维度。
最佳答案
var img = new Image();
img.onload = function() { alert("Height: " + this.height); }
img.src = "http://path/to/image.jpg";
请注意,按上面的顺序执行此操作很重要:首先附加处理程序,然后设置src
。如果你反过来做,图像在缓存中,你可能会错过这个事件。 JavaScript 在浏览器中的单线程上运行(除非您使用网络 worker ),但浏览器 不是单线程的。浏览器查看 src
是完全有效的,确定资源可用,加载它,触发事件,查看元素以查看它是否有任何需要排队等待回调的处理程序,看不到任何内容,并完成事件处理,所有这些都在 src
行和附加处理程序的行之间。 (回调不会在行之间发生,如果它们被注册,它们会在队列中等待,但如果没有,则事件不需要等待。)
关于javascript - 等待图像在 JavaScript 中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342132/