sead 发表于 2020-11-4 14:23:34

图片延迟加载小脚本(原生JS)- 无需改动HTML

<script>
    var lazyLoad = function(){
      // 根据情况替换 body img
      var lazyImages = [].slice.call(document.querySelectorAll("body img"));
      lazyImages.forEach(function(lazyImage) {
            let src = lazyImage.src;
            lazyImage.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
            lazyImage.setAttribute('data-src', src);
      });
      if ("IntersectionObserver" in window) {
            let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
                entries.forEach(function(entry) {
                if (entry.isIntersecting) {
                  let lazyImage = entry.target;
                  lazyImage.src = lazyImage.dataset.src;
                  //lazyImage.classList.remove("lazy");
                  lazyImageObserver.unobserve(lazyImage);
                }
                });
            });
      
            lazyImages.forEach(function(lazyImage) {
                lazyImageObserver.observe(lazyImage);
            });
      } else {
            // Possibly fall back to event handlers here
      }
    }

    document.addEventListener("DOMContentLoaded", function() {
      lazyLoad();
    });
</script>
[*]脚本安装到</body>结束标签后面
[*]"body img" 意思是对body内的img做延迟加载。
要是想指定区域,你需要了解css选择器
[*]"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; 是空白图片,非loading GIF(无加载特效)

andyisless 发表于 2020-11-4 20:44:28

先显示文字内容,再显示图片吗

为了网页速度?

sead 发表于 2020-11-4 22:01:17

andyisless 发表于 2020-11-4 20:44
先显示文字内容,再显示图片吗

为了网页速度?

文字内容本身就是先显示的,图片是后加载的。
这些图片本应该是一起加载的,延迟加载是把非可见的图片暂时用同一个图片代替(比如loading gif/或者1x1px的空白图片)减少请求,图片在可见区域立即加载或者设定距离可见区域多少像素提前加载(根据距离这种会无等待感)

andyisless 发表于 2020-11-4 23:50:08

sead 发表于 2020-11-4 22:01
文字内容本身就是先显示的,图片是后加载的。
这些图片本应该是一起加载的,延迟加载是把非可见的图片暂 ...

o 这样的出发点

的确对速度有帮助

我看到tupa的网站,也是这样操作的,结果很多图片不显示,都是显示同一张图片

好像玩脱了,对用户体验不是很好。

易生挺 发表于 2020-11-5 10:21:13

sead 发表于 2020-11-4 22:01
文字内容本身就是先显示的,图片是后加载的。
这些图片本应该是一起加载的,延迟加载是把非可见的图片暂 ...

直接上插件,性能不够,再升级主机。早期能用钱解决的,少编一些代码。多花点时间研究竞争对手的外链手法,这个效率更高更快。后期几w几十w流量再研究这个,才更有价值。:)

sead 发表于 2020-11-5 11:10:57

易生挺 发表于 2020-11-5 10:21
直接上插件,性能不够,再升级主机。早期能用钱解决的,少编一些代码。多花点时间研究竞争对手的外链手法 ...

对于我这种码农出生的不写代码会手痒:lol 另外些需求找外包沟通时间大于自己动手的时间。 谷歌对网站体验明年有重要更新,如果到跟前再解决就有点跟不上节奏。外链手法:1种是砸PBN,或者买内容外链,链接自然就OK~ 目前就购买链接还需要多研究
页: [1]
查看完整版本: 图片延迟加载小脚本(原生JS)- 无需改动HTML