2011-04-22 85 views
0

我想知道在淡入内容之前是否可以检查背景图片是否已经加载?背景图像设置在CSS中,所以如果用户没有打开js,他们仍然可以查看该网站。是否有可能检查是否使用jQuery加载了背景图片?

我已经试过$(".quick-load").load(function() { $("#content").fadeIn(); });

我也用。就绪(),但没有任何效果。

我遇到的确切问题是图像在某些场合会闪烁。

任何想法会有帮助,谢谢。

+0

一个问题......你是通过CSS加载血糖,以便它加载,即使JS被禁止,但再怎么样的内容?你不在乎吗? :) – 2011-04-22 11:02:37

+0

我有一个特殊的没有html5的js文件。所以如果没有js被检测到我有显示:块的内容 – saunders 2011-04-22 11:08:30

+0

这就是聪明:) – 2011-04-22 11:15:33

回答

2

我想你应该尝试一个稍微不同的方式,这是第一次加载图像中隐藏的图像标签,然后在加载事件做冷静的衰落

<img src="background.png" alt="" id="background" 
style="visibility:hidden;position:absolute" /> 

然后做:

$('#background').load(function() { 
    $("#content").fadeIn(); } 
}); 

这将工作,因为浏览器缓存加载的图像,它将可用于后台。只要确保不可见图像和背景图像的来源完全相同即可。

+0

啊,所以你假装浏览器加载该图像,但在加载不可见图像时,我的背景图像已经加载,它不会做任何闪烁? – saunders 2011-04-22 11:19:27

+0

是的,就是这样。如果您也搜索图片预加载,那么您可以使用另一种策略。 – 2011-04-22 15:20:54

+0

啊恶人。感谢这一点,并感谢其他想法。即时通讯将首先给你的提示:) – saunders 2011-04-22 15:47:19

0

您可以使用隐藏的<img>“预加载”图像。

$('<img/>').attr('src', 'http://picture.com/pic.png').load(function() { 
    $("#content").css({"background-image":"http://picture.com/pic.png" 
       .fadeIn(); 
}); 

How can I check if a background image is loaded?