javascript - 等待图像在 JavaScript 中加载

标签 javascript image load wait

我正在进行 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/

相关文章:

emacs - 在另一个 lisp 文件中调用函数

javascript - 奇怪的 Safari 视频 "Load"行为

javascript - 如何将扩展父 div 的文本旁边的图像对齐到全高?

javascript - AngularJS - 如何过滤嵌套的 json 数组

image - Go - 将 base64 字符串保存到文件

javascript - 从文件上传读取 url 时图像自动旋转(当它是大图像时)?

javascript - 如果 css div :active moves it,则不会触发 div onclick 事件

javascript - 如何定位固定元素

html - 图像不显示复选框(css)

android:在类中加载图像