我正在进行Ajax调用,它会返回一些信息,包括图像路径.我在HTML中准备了所有这些信息,这些信息将显示为一种弹出窗口.我只是将popup div的可见性从隐藏切换为可见.
要设置弹出窗口div的位置,我必须根据图像的高度进行计算.因此,在设置位置和将可见性切换为可见之前,我必须等待图像加载以了解其尺寸.
我尝试了递归,setTimeout,完成img属性的技巧,而循环...没有成功.
那么,我该怎么做呢.也许我应该在Ajax调用中返回维度.
var img = new Image(); img.onload = function() { alert("Height: " + this.height); } img.src = "http://path/to/image.jpg";
请注意,按上述顺序执行此操作非常重要:首先附加处理程序,然后设置src
.如果你反过来这样做,并且图像在缓存中,你可能会错过这个事件.JavaScript在浏览器中的单个线程上运行(除非您使用的是Web工作者),但浏览器不是单线程的.浏览器看到src
,识别资源是否可用,加载它,触发事件,查看元素是否有任何需要排队等待回调的处理程序,看不到任何处理程序,并完成事件是完全有效的.处理,所有src
行和连接处理程序的行之间.(如果它们被注册,它们之间不会发生回调,它们会在队列中等待,但如果没有,则不需要等待事件.)
如果使用jQuery,则可以使用其load事件.
看看这个例子:
$('img.userIcon').load(function(){ if($(this).height() > 100) { $(this).addClass('bigImg'); } });