2011-03-18 22 views
5

我预载了一些图像,然后在Lightbox中使用它们。我遇到的问题是,虽然图像正在加载,但它们并未被浏览器显示。在Chrome中未显示预加载的图像

此问题特定于Chrome。它一直坚持通过Chrome 8-10,而我一直在尝试着去解决这个问题,并且一无所获。

我已阅读这些类似的问题,
Chrome not displaying images though assets are being delivered to browser
2 Minor Crossbrowser CSS Issues. Background images not displaying in Google Chrome?
JavaScript preloaded images are getting reloaded

,所有的细节类似的行为,但在Chrome的Mac。而这在Windows中发生。

  • 所有其他浏览器似乎没问题。
  • 如果您打开Firefox和Chrome,请在Firefox中加载页面,然后在Chrome中显示图像。
  • 一旦你手动加载图像,采用的Webkit Webdev的工具栏啄,他们总是出现
  • 所有链接的图像和这样的罚款和工作
  • 清除一切从Chrome中似乎并没有作出任何差异(缓存,历史等)

如果任何人有任何想法,这将是非常有益的,因为我几乎所有的选择都在这里。

PS,抱歉,如果有迟到的回复,我明天就休假一周! :D

更新 这是预加载图像的javascript函数。

var preloaded = new Array(); 
function preload_images() { 
    for (var i = 0; i < arguments.length; i++){ 
     document.write('<'); 
     document.write('img src=\"'+arguments[i]+'\" style=\"display:none;\">'); 
    }; 
}; 

更新
我仍然有问题,这一点,我已经删除了整个预加载图像的功能。也许通过document.write()提供样式表不是最好的方法吗?

+0

心灵粘贴一些代码,以便我们了解您的压载吗? – jlindenbaum 2011-03-18 18:23:51

回答

5

Chrome可能没有预加载它们,因为它没有显示地写入DOM,所以它可能足够智能以实现它不需要渲染。试试这个:

var preloaded = new Array(); 

function preload_images(){ 
    for (var x = 0; x < preload_images.arguments.length; x++) 
    { 
     preloaded[x]  = new Image(); 
     preloaded[x].src = preload_images.arguments[x]; 
    } 
} 

JavaScript的Image对象有很多有用的功能,以及可能对您有用:

http://www.javascriptkit.com/jsref/image.shtml

onabort()

守则当用户中止下载图像时执行。

的onerror()发生错误时 与图像的加载执行

代码(即:不 找到)。实施例(多个)

的onload()被执行

代码当图像 成功和完全下载。

然后你也有complete属性,其真/假告诉你,如果图像已完全(预)加载。

+0

会在20个小时内添加赏金:) – 2011-04-04 12:33:21

+0

@David,它对你有用吗?很高兴它做到了,如果它确实如此:) – 2011-04-04 12:34:15

+0

是的,它看起来像预加载在Chrome中稍微复杂一点,而不仅仅是添加图像! – 2011-04-04 12:35:22

2

事实证明,如果缓存设置不正确,Chrome会考虑HTTP缓存并在预加载后立即丢弃任何预加载的映像。

在我的情况下,我正在动态生成图像,默认情况下响应已发送到浏览器,并立即过期。

要解决它,我必须设置下面的以下内容:

 Response.Cache.SetExpires(DateTime.Now.AddYears(1)); 
     Response.Cache.SetCacheability(HttpCacheability.Public); 

     return File(jpegStream, "image/jpeg"); 
+0

我正在通过PHP生成图片,我在想为什么Google Chrome会丢弃预先加载的图片。然后我发现我过去设定了过期日期。感谢信息伙伴。 – viji 2013-02-15 09:14:35