【发布时间】:2012-08-12 12:59:06
【问题描述】:
我的网站上有一个画廊。图库包含 15 张图片,每张大约 500KB(总大小为 7.5MB)。
因为加载图库需要一段时间(在我的计算机上需要 25 秒,这取决于连接),我希望访问者知道图库正在加载,因此 Ajax loading GIF。
我希望访问者在进入图库页面后立即看到正在加载的 GIF,直到图库图像已下载并可供查看。
为了实现我的目标,这是我所做的:
这是画廊 HTML 页面正文的开头:
<body>
<img src="images/ajax-loader.gif" alt="" class="hiddenPic" />
<!-- loading Ajax loading GIF before all the other images -->
这是画廊 CSS 部分:
#gallery {
background: url(images/ajax-loader.gif);
background-repeat:no-repeat;
background-attachment: fixed;
background-position: center;
所以基本上,加载 GIF 应该在访问者进入画廊页面后立即下载,因为它是 <body> 中将要下载的第一个对象。但是,由于 hiddenPic 类,它不可见。
此方法应该有助于尽快准备好加载的 GIF 并作为图库背景显示,直到所有图库图像都已下载并且图库已准备好。
但是,加载 GIF 在 Google Chrome 上无法正常工作;它在 Firefox 和 IE 上运行良好(完美旋转) - 但在 Chrome 上卡住(无法正常旋转),从它出现的那一刻到图库准备好。
更新: 我知道我可以实现一个更好的画廊(就像 cmets 中建议的那些),在进入画廊页面时需要用户更少的资源 -但我不明白当 GIF 加载器在 Firefox 和 IE 上完美运行时,这可能是导致问题的原因。
为什么 Ajax 加载 GIF 不能在 Chrome 上正常工作?
【问题讨论】:
-
加载您的网站时,它似乎按预期工作,即使在 Chrome (v21.0.1180.77 m) 中也是如此。当然,当我加载页面时,我会看到 GIF 微调器,后来它被画廊取代。我会说它相当慢,即。我没有看到微调器“旋转”,我只是在 3 或 4 个不同的位置看到它,但这大概是由于加载图库的其余部分而我的电脑有点慢。但是,我将在大约 5-6 秒内加载图库,而不是您建议的 25 秒,这样可能会影响结果。
-
另外,虽然我认为您绝对应该有一个 GIF 微调器,但我想知道您是否应该立即加载整个画廊,原因有两个:1)它会减慢整个页面的速度,以及 2)它会浪费带宽,因为人们可能无法查看所有图片。我将探索一个过程:1)在选择每个图像时加载每个图像(因此每个图像的 gif 微调器)或 2)加载前 3 个。然后当他们点击“下一个图像”(显示图像 2)时加载图像 4。他们不会看到任何区别,但会更快、更高效。
-
所以微调器卡住的原因是因为加载图库图像占用了大部分资源?我想让加载器旋转 - GIF 不是那么重,所以我不明白它为什么会卡住,我无法让它正常旋转,即使(嗯,只是)当图像被下载到计算机时。关于您的建议,这听起来是缩短等待时间并使其快速运行的好方法。我不确定哪种方式更好,但如果我使用 no'1,我必须将缩略图添加到我的画廊。
-
但是,仍然 - 它在 IE 上完美运行 - 加载器完美地旋转,直到画廊准备就绪 - 但在 Chrome 上却不行。一定有它在不同浏览器上表现不同的原因。
-
是的,很遗憾,我无法为 Chrome 问题提供任何解决方案,尤其是在我的 Chrome 版本/配置中它似乎可以正常工作(如果有点“生涩”的动作)。可能您可以尝试仅加载一两个画廊图像并查看这是否有助于正确显示内容,在这种情况下,几乎可以肯定是其他图像占用资源。遗憾的是,我对浏览器技术的了解还不够,无法说明为什么它可以在某些情况下正确加载,而在其他情况下则不能。
标签: html css google-chrome gif preloader