当用户向下滚动页面时,网站通常会延迟加载图像,以使最初查看的页面顶部加载得更快。
与其等到用户决定向下滚动页面,是否可以检测顶部图像何时已下载到客户端(或通过缓存图像访问),然后立即开始下载下一组图像?如果是这样,怎么做?
当用户向下滚动页面时,网站通常会延迟加载图像,以使最初查看的页面顶部加载得更快。
与其等到用户决定向下滚动页面,是否可以检测顶部图像何时已下载到客户端(或通过缓存图像访问),然后立即开始下载下一组图像?如果是这样,怎么做?
请参阅 jsfiddle 中的演示。实现非常简单:第一次收听window.onload
,等到整个页面加载完毕。一旦它触发,加载下一个图像并监听它的onload
事件。重复此操作,直到不再需要预加载图像:
function loadNext() {
var img = findNextImageToPreload();
img.load(function () {
loadNext();
});
setImgSrcOnImageSoItStartsPreloading(img);
}
$(window).load(function () {
loadNext();
});
这只是基本思想,而不是工作loadNext
功能。在 jsfiddle 中实现的一个接一个地加载一个图像。如果您希望能够一次加载多个图像,则需要loadNext
多次调用。
在任何情况下,您都需要额外检查图像是否在预加载之前滚动/显示。显然你想立即开始加载它。
另请注意,如果图像不可见,某些浏览器可能会避免加载图像。尤其是移动浏览器在某些情况下会这样做。你可以使用deelay.me
它。如果所有这些loadNext
都在同一秒内运行,那么您需要将图像放置在用户不可见但对浏览器“可见”的地方,以使其逻辑无效。在大多数情况下,我建议不要欺骗浏览器,因为供应商付出了很多努力来使请求合理。不过,很大程度上取决于您的用例。希望这可以帮助。