2011-12-04 85 views
0

我写了一个函数在盒子的中心显示图像。但是,当图像加载时,它会带有一些默认样式,包括位置信息。调用中心图像函数基本上与图像加载同时发生,但在图像完全加载之前完成。这会导致中心图像功能的副作用被图像的默认样式所过度,因此图像不会放置在方框的中心。延迟执行一个js函数

我想知道是否可以延迟执行中心图像函数来解决这个问题。任何人告诉我如何推迟js函数的执行?非常感谢。

回答

0

您可以使用setTimeout延迟功能的执行,但我不认为这是您想要的,因为您可以侦听图像何时加载。

if(image.complete) { 
    // already finished loading 
}else{ 
    image.onload=function() { 
     // loaded 
    }; 
} 
+0

我不知道,但是在设置onload时会不会出现竞争状态?也就是说,图像在image.onload被分配之前完成其加载。这会搞砸了吗?如果是这样,在分配onload函数之后是否应该有另一个image.complete检查? –

+0

@trinithis:我怀疑可能发生。 JavaScript是单线程的,而且这段代码是同步的,所以我认为在代码完成之前,别的事情都不会发生。如果在代码运行时图像完成加载,则此代码执行完毕后会发生该事件。 – RightSaidFred

+0

只是,虽然JS是单线程的,但页面加载器可能不共享相同的线程。 –

0

呼吁onload事件的img

<img src="<>" onload="centerImage()" /> 
0

“中心图像”功能,如果您使用的是jQuery JavaScript库,你可以将所有的图像后,用剪断运行代码下面的代码已加载:

$(window).load(function(){ 
    //initialize after images are loaded 
}); 

而不是“窗口”(页面上的所有图像已加载),您也可以直接选择一个我法师。