我正在进行 Ajax 调用,它会返回一些信息,包括图像路径。
我在我的 HTML 中准备了所有这些信息,这些信息将显示为一种弹出窗口。我只是将 by popup div 的可见性从隐藏切换为可见。
要设置弹出 div 的位置,我必须根据图像的高度进行计算。因此,在设置位置并将可见性切换为可见之前,我必须等待图像加载才能知道其尺寸。
我尝试了递归、setTimeout、完整的 img 属性、while 循环等技巧……但没有成功。
那么,我该怎么做呢?也许我应该在我的 Ajax 调用中返回维度。
原文由 Jeenyus 发布,翻译遵循 CC BY-SA 4.0 许可协议
请注意,按上面的顺序执行此操作很重要: 首先 附加处理程序, 然后 设置
src
。如果你反过来做,图像在缓存中,你可能会错过这个事件。 JavaScript 在浏览器中在单线程上运行(除非您使用网络工作者),但 浏览器 不是单线程的。浏览器看到src
是完全有效的,确定资源可用,加载它,触发事件,查看元素以查看它是否有任何需要排队等待回调的处理程序,而不是在src
行和附加处理程序的行之间查看任何事件并完成事件处理。 (如果它们被注册,回调就不会在行之间发生,它们会在队列中等待,但如果没有,则事件不需要等待。)