0

我正在整理一个画廊页面,其中的图像显示在一个fancyBox中。实际的图像是大文件,所以我正在运行一个 php 脚本来重新调整服务器端的原始图像文件的大小,并为 fancyBox 输出一个更小、更轻的版本。这样做的结果意味着图像的 URL有一个类似的“/images/photo.php?image=001.jpg”。

这样做意味着fancyBox 必须被强制进入图像模式,因为它通常需要一个.jpg 文件,但它会得到一个.php 脚本。这很好用,但确实会导致 fancyBox 不再预加载下一个和上一个图像的问题。我最初使用的更小/更轻/更快加载图像的计划在这一点上失败了,因为重新调整图像大小的 PHP 脚本需要一些时间,并导致在单击下一步和实际显示新图像之间存在令人讨厌的延迟。能够预加载下一个/上一个会很有帮助。

有没有人知道是否可以强制fancyBox预加载下一个图像,而不管它指向的文件类型是什么?

附带说明一下,不运行服务器端脚本来重新调整图像大小会导致 fancyBox 和一些浏览器放弃加载图像并很快耗尽大量内存......每个图像在重新调整大小之前约为 2MB .

任何建议表示赞赏。

4

2 回答 2

0

尝试这个:

$(".fancybox").fancybox({
  type: 'image'
});

Fancybox 默认猜测 url 的内容。使用其指定内容type

于 2012-09-27T04:53:29.290 回答
0

我相信这个问题是特定于浏览器的。我正在处理完全相同的事情(通过带有预加载的灯箱的 php 动态调整大小)并发现虽然动态图像已按预期预加载,但 Chrome 坚持在显示时再次加载它们。预加载在 Firefox 上运行良好。我猜这与 Chrome 检测到内容是动态的有关,但我没有进一步调试。

由于我在动态调整大量图片的大小时遇到​​了同样的内存问题,我切换到将图片调整到磁盘并使用我的主 php 文件中的函数来提供直接指向磁盘上调整大小的图像的链接。这意味着 Chrome 开始正确处理预加载。

于 2012-11-12T22:39:14.347 回答