我写了一个函数在盒子的中心显示图像。但是,当图像加载时,它会带有一些默认样式,包括位置信息。调用中心图像函数基本上与图像加载同时发生,但在图像完全加载之前完成。这会导致中心图像功能的副作用被图像的默认样式所过度,因此图像不会放置在方框的中心。延迟执行一个js函数
我想知道是否可以延迟执行中心图像函数来解决这个问题。任何人告诉我如何推迟js函数的执行?非常感谢。
我写了一个函数在盒子的中心显示图像。但是,当图像加载时,它会带有一些默认样式,包括位置信息。调用中心图像函数基本上与图像加载同时发生,但在图像完全加载之前完成。这会导致中心图像功能的副作用被图像的默认样式所过度,因此图像不会放置在方框的中心。延迟执行一个js函数
我想知道是否可以延迟执行中心图像函数来解决这个问题。任何人告诉我如何推迟js函数的执行?非常感谢。
您可以使用setTimeout
延迟功能的执行,但我不认为这是您想要的,因为您可以侦听图像何时加载。
if(image.complete) {
// already finished loading
}else{
image.onload=function() {
// loaded
};
}
呼吁onload
事件的img
<img src="<>" onload="centerImage()" />
“中心图像”功能,如果您使用的是jQuery JavaScript库,你可以将所有的图像后,用剪断运行代码下面的代码已加载:
$(window).load(function(){
//initialize after images are loaded
});
而不是“窗口”(页面上的所有图像已加载),您也可以直接选择一个我法师。
我不知道,但是在设置onload时会不会出现竞争状态?也就是说,图像在image.onload被分配之前完成其加载。这会搞砸了吗?如果是这样,在分配onload函数之后是否应该有另一个image.complete检查? –
@trinithis:我怀疑可能发生。 JavaScript是单线程的,而且这段代码是同步的,所以我认为在代码完成之前,别的事情都不会发生。如果在代码运行时图像完成加载,则此代码执行完毕后会发生该事件。 – RightSaidFred
只是,虽然JS是单线程的,但页面加载器可能不共享相同的线程。 –