当前位置:首页 > JavaScript

js实现图片加载

2026-02-28 22:01:21JavaScript

使用 Image 对象加载图片

通过创建 Image 对象动态加载图片,适合预加载或动态插入场景。

const img = new Image();
img.src = 'path/to/image.jpg';
img.onload = function() {
  console.log('图片加载完成');
  document.body.appendChild(img); // 插入到DOM
};
img.onerror = function() {
  console.error('图片加载失败');
};

通过 fetch 加载二进制图片数据

适用于需要处理二进制数据或通过API获取图片的场景。

js实现图片加载

fetch('path/to/image.jpg')
  .then(response => response.blob())
  .then(blob => {
    const imgUrl = URL.createObjectURL(blob);
    const img = document.createElement('img');
    img.src = imgUrl;
    document.body.appendChild(img);
  })
  .catch(error => console.error('加载失败:', error));

监听现有 img 标签的加载状态

直接为DOM中的 img 标签添加事件监听器。

<img id="myImage" src="path/to/image.jpg" alt="示例图片">
<script>
  const img = document.getElementById('myImage');
  img.addEventListener('load', () => console.log('DOM图片加载完成'));
  img.addEventListener('error', () => console.log('DOM图片加载失败'));
</script>

图片懒加载实现

结合 IntersectionObserver 实现滚动懒加载,提升页面性能。

js实现图片加载

const lazyImages = document.querySelectorAll('img[data-src]');
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      observer.unobserve(img);
    }
  });
});
lazyImages.forEach(img => observer.observe(img));

HTML需配合 data-src 属性:

<img data-src="path/to/lazy-image.jpg" alt="懒加载图片">

预加载多张图片

通过 Promise.all 批量预加载图片资源。

const preloadImages = (urls) => {
  return Promise.all(
    urls.map(url => 
      new Promise((resolve, reject) => {
        const img = new Image();
        img.src = url;
        img.onload = resolve;
        img.onerror = reject;
      })
    )
  );
};
preloadImages(['image1.jpg', 'image2.jpg'])
  .then(() => console.log('所有图片加载完成'))
  .catch(err => console.error('部分图片加载失败', err));

注意事项

  • 跨域问题:若图片来自不同域,需确保服务器配置CORS头(如 Access-Control-Allow-Origin)。
  • 性能优化:大图建议使用压缩格式(如WebP)或延迟加载。
  • 错误处理:始终添加 onerror 回调以避免静默失败。

标签: 加载图片
分享给朋友:

相关文章

vue实现图片轮播

vue实现图片轮播

Vue 实现图片轮播的方法 使用第三方库(推荐) 安装 vue-awesome-swiper 库,这是基于 Swiper 的 Vue 封装: npm install swiper vue-aweso…

vue实现图片打点

vue实现图片打点

实现图片打点的基本思路 图片打点功能通常指在图片上添加可交互的标记点,点击或悬停时显示相关信息。Vue实现该功能需要结合DOM操作和事件监听。 核心步骤 准备图片和容器 在Vue组件中设置一个相对定…

vue实现拖动图片验证

vue实现拖动图片验证

Vue 实现拖动图片验证功能 核心思路 拖动图片验证通常需要用户将图片拖动到指定区域或按正确顺序排列。实现时需要处理拖拽事件、验证逻辑和视觉反馈。 实现步骤 1. 基础组件结构 <templ…

vue图片实现多选

vue图片实现多选

Vue 图片多选实现方法 在 Vue 中实现图片多选功能可以通过以下几种方式完成,具体取决于项目需求和复杂度。 使用 v-model 和数组存储选中状态 通过 v-model 绑定一个数组来记录选中…

react如何引入图片

react如何引入图片

在React中引入图片的方法 使用import直接引入 将图片文件放在项目src目录下(如src/images),通过ES6的import语法引入: import logo from './…

jquery加载页面

jquery加载页面

jQuery 加载页面内容的方法 使用 .load() 方法 通过 AJAX 请求加载远程数据并插入到指定元素中。适用于加载部分页面片段。 $("#targetElement").load(…