多种js图片预加载实现方式分享

下面就为大家详细讲解多种JS图片预加载实现方式。

1. 什么是图片预加载?

在网页加载中,如果直接使用img标签加载图片,等用户看到图片会出现白屏,影响用户体验,因此我们通常需要在网页中使用图片预加载,将图片提前加载好,等用户看到图片的时候就可以直接显示,这样可以提升用户体验。

2. 图片预加载实现方式

2.1 使用Image对象预加载图片

使用Image对象预加载图片的方式如下:

function preLoadImg(url){
  return new Promise((resolve, reject) => {
    let img = new Image();
    img.src = url;
    img.onload = function() {
      resolve();
    }
    img.onerror = function() {
      reject();
    }
  });
}

preLoadImg("https://picsum.photos/200/300").then(() => {
  console.log("图片加载完成!");
}).catch(() => {
  console.log("图片加载失败!");
});

2.2 使用XMLHttpRequest对象和Blob对象预加载图片

使用XMLHttpRequest对象和Blob对象预加载图片的方式如下:

function preLoadImg(url) {
  return new Promise((resolve) => {
    let xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'blob';
    xhr.onload = function() {
      if (this.status === 200) {
        var blob = this.response;
        var img = new Image();
        img.onload = function() {
          resolve();
        };
        img.src = window.URL.createObjectURL(blob);
      }
    };
    xhr.send();
  });
}

preLoadImg("https://picsum.photos/200/300").then(() => {
  console.log("图片加载完成!");
}).catch(() => {
  console.log("图片加载失败!");
});

3. 总结

通过以上两个示例,我们可以看到,实现图片预加载的方式有很多种,主要有使用Image对象和XMLHttpRequest对象和Blob对象。在实际使用中,我们需要根据实际场景选择最合适的方式来实现图片预加载,以提升用户体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:多种js图片预加载实现方式分享 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • C语言编程中从密码文件获取数据的函数总结

    标题 C语言编程中从密码文件获取数据的函数总结 概述 在C语言编程中,从密码文件获取数据是一项常见的任务。本文将总结几种方法,帮助读者更好地实现这个功能。常见的密码文件格式包括/etc/password和/etc/shadow。 从/etc/password文件获取数据 /etc/password文件是一个文本文件,包含了系统上的用户信息。以下是从该文件读取…

    other 2023年6月26日
    00
  • javascript实现快速排

    JavaScript实现快速排序的完整攻略 快速排序是一种常用的排序算法,它的时间复杂度为O(nlogn),是一种高效的排序算法。本文将介绍如何使用JavaScript实现快速排序,并提供两个示例说明。 快速排序的原理 快速排序的原理是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按照此方法对这两部分…

    other 2023年5月5日
    00
  • 流放之路3.0暗影刺客裂风闪电箭BD介绍 刺客必爆超高秒伤BD推荐

    流放之路3.0暗影刺客裂风闪电箭BD介绍 简介 暗影刺客裂风闪电箭(Shadow Assassin Lightning Arrow)是一种高爆发、高秒伤的刺客职业建议。该建议专注于使用裂风闪电箭技能来快速消灭敌人,并利用暗影刺客的优势来提高伤害输出。 技能配置 以下是该BD的技能配置: 主要技能:裂风闪电箭(Lightning Arrow)- 用于主要的伤害…

    other 2023年8月5日
    00
  • javacc从入门到出门

    以下是关于JavaCC从入门到出门的完整攻略: JavaCC从入门到出门 JavaCC是一个用于生成Java解析器的工具,它可以根据语法规则生成Java代码,用于解析输入的文本。以下是JavaCC的入门教程。 1. 安装JavaCC 首先,您需要安装JavaCC。您可以从JavaCC的官方网站下载最新版本JavaCC。 2. 编写语法规则 接下来,您需要编写…

    other 2023年5月6日
    00
  • 批处理命令教学之管道符号(|)

    批处理命令教学之管道符号(|) 管道符号(|)是批处理命令中的一种特殊符号,用于将前一个命令的输出结果传递给后一个命令进行处理。通过使用管道符号,我们可以将多个命令结合在一起,实现更加复杂的批处理功能。 语法格式: 命令1 | 命令2 其中,命令1代表前一个命令,命令2代表后一个命令。管道符号的意义是将命令1的输出结果传递给命令2作为输入,命令2会根据命令1…

    other 2023年6月26日
    00
  • js获取滚动条距离顶部高度

    js获取滚动条距离顶部高度 在我们日常的web开发中,有时候我们需要知道用户滚动页面的高度,比如:当用户滚动到某个位置,我们需要执行某个事件或者显示某个元素。这时候,我们就需要获取滚动条距离顶部的高度。 获取window对象滚动状态 我们可以通过window的scrollY或者pageYOffset属性获取浏览器窗口垂直方向滚动的距离。代码如下: var s…

    其他 2023年3月28日
    00
  • 思维导图MindMapper怎么注册协作账号?

    思维导图MindMapper是一款强大的思维导图工具,实现了云端协作功能,用户可以在不同设备上方便地使用和编辑同一份思维导图。注册和使用协作账号非常重要,下面是MindMapper注册协作账号的详细攻略。 第一步:进入MindMapper官网 打开浏览器,输入MindMapper官网地址:https://www.mindmapper.com/zh-cn/在首…

    other 2023年6月27日
    00
  • osgearth介绍

    osgEarth 介绍 osgEarth是一个开源的地理空间引擎,它使用OpenSceneGraph的各种功能来创建三维地球和地理空间数据的视觉化。osgEarth支持使用各种格式的数据(包括地形高度、矢量地图、遥感影像和OBS代码),可以从不同的数据源中获取数据,并可以快速可视化地展示它们。 osgEarth的设计哲学是通过建立多层次的渲染管道,使地球和地…

    其他 2023年3月29日
    00
合作推广
合作推广
分享本页
返回顶部