美文网首页
js如何控制一次只加载一张图片,加载完成后再加载下一张

js如何控制一次只加载一张图片,加载完成后再加载下一张

作者: 泪滴在琴上 | 来源:发表于2024-04-15 11:01 被阅读0次

    实现逻辑:新建一个Image对象实例,为实例对象设置src属性等,在onload事件中添加此实例对象到父元素中,然后将图片地址数组中的第一个元素剔除,继续调用此方法直到存储图片地址的数组为空。

    const imgArrs = [...]; // 图片地址
    const content = document.getElementById('content');
    const loadImg = () => {
      if (!imgArrs.length)  return;
      const img = new Image(); // 新建一个Image对象
      img.src = imgArrs[0];
      img.setAttribute('class', 'img-item');
      img.onload = () => { // 监听onload事件
        // setTimeout(() => { // 使用setTimeout可以更清晰的看清实现效果
          content.appendChild(img);
            imgArrs.shift();
            loadImg();
        // }, 1000);
      }
      img.onerror = () => {
        // do something here
      }
    }
      loadImg();
    
    </script>
    

    扩展知识

    img标签是什么时候发送图片资源请求的?

    HTML文档渲染解析,如果解析到img标签的src时,浏览器就会立刻开启一个线程去请求图片资源。

    动态创建img标签,设置src属性时,即使这个img标签没有添加到dom元素中,也会立即发送一个请求。
    /例1:

    const img = new Image();
    img.src = 'http://xxxx.com/x/y/z/ccc.png';
    

    上面的代码如果运行起来后,就会发送请求。
    再看一个例子:创建了一个div元素,然后将存放img标签元素的变量添加到div元素内,而div元素此时并不在dom文档中,页面不会展示该div元素,那么浏览器会发送请求吗?
    /例2:

    const img = `<img src='http://xxxx.com/x/y/z/ccc.png'>`;
    const dom = document.createElement('div');
    dom.innerHtml = img;
    

    答案:会请求。

    通过设置css属性能否做到禁止发送图片请求资源?

    1\给img标签设置样式display:none或者visibility: hidden,隐藏img标签,无法做到禁止发送请求。

    <img src="http://xxx.com/x/sdf.png" style="display: none;">
    或者
    <img src="http://xxx.com/x/sdf.png" style="visibility: hidden;">
    

    2、将图片设置为元素的背景图片,但此元素不存在,可以做到禁止发送请求

    <!DOCTYPE html>
    <html lang='en'>
    <head>
        <meta charset='UTF-8'>
        <title></title>
        <style>
            .test {
                height: 200px;
                background-image: url('http://eb118-file.cdn.bcebos.com/upload/39148b2a545b48bf9b4ee95fd1b7f1eb_1515564089.png?');
            }
        </style>
    </head>
    <body>
    <div></div>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:js如何控制一次只加载一张图片,加载完成后再加载下一张

          本文链接:https://www.haomeiwen.com/subject/qcddxjtx.html