Javascript 使用window onload或document ready延迟图像以提高页面速度

Javascript 使用window onload或document ready延迟图像以提高页面速度,javascript,pagespeed,lighthouse,Javascript,Pagespeed,Lighthouse,我一直在用下面的代码延迟我网站上的所有图片(普通图片或背景图片) var imgDefer = document.querySelectorAll('img[data-deferred-image]'); for (var i=0; i < imgDefer.length; i++) { if(imgDefer[i].getAttribute('data-deferred-image')) { imgDefer[i].setAttribute('src',imgDe

我一直在用下面的代码延迟我网站上的所有图片(普通图片或背景图片)

var imgDefer = document.querySelectorAll('img[data-deferred-image]');
for (var i=0; i < imgDefer.length; i++) {
    if(imgDefer[i].getAttribute('data-deferred-image')) {
        imgDefer[i].setAttribute('src',imgDefer[i].getAttribute('data-deferred-image'));
    }
}

var backgroundImgDefer = document.querySelectorAll('[data-deferred-bg-image]');
for (var i=0; i < backgroundImgDefer.length; i++) {
    if(backgroundImgDefer[i].getAttribute('data-deferred-bg-image')) {
        backgroundImgDefer[i].style.backgroundImage = 'url("' + backgroundImgDefer[i].getAttribute('data-deferred-bg-image') + '")';
    }
}
var-imgDefer=document.queryselectoral('img[数据延迟映像]);
对于(var i=0;i
这是当前在一个
窗口中运行的。onload
标记应该可以工作,但我注意到pagespeed忽略了它们被延迟的事实,只是要求我延迟它们

我注意到谷歌延迟图像的说明

Lighthouse标记在交互时间(TTI)事件之前请求的屏幕外图像

我应该在什么时候调用我的延迟代码,以便pagespeed/lighthouse audit真正关注我正在延迟的事实


代码确实在工作,我可以主动看到它在页面加载后加载图像。

如果不可用,您可能需要尝试使用并返回到
setTimeout


您也可以选择不加载所有图像并优先考虑视图中的图像。

如您所知,要解决此问题,请使用预先制作的小型库,如或使用适当的

window.onlad无法帮助您克服互动时间

建议:默认情况下,您甚至可以显示一个小缩略图或图像占位符,加载页面后,您可以将其替换为高质量的真实图像,这样浏览器将不会显示OffCren图像问题,作为参考,您可以查看如何加载图像