当前位置:首页 > JavaScript

js实现图片预加载

2026-01-30 10:32:28JavaScript

实现图片预加载的 JavaScript 方法

使用 Image 对象预加载

创建一个 Image 对象并设置其 src 属性,浏览器会自动缓存加载的图片资源。可以通过监听 onloadonerror 事件判断加载状态。

js实现图片预加载

function preloadImage(url) {
  const img = new Image();
  img.src = url;
  img.onload = () => console.log(`Loaded: ${url}`);
  img.onerror = () => console.error(`Failed: ${url}`);
}

// 示例
preloadImage('https://example.com/image.jpg');

批量预加载多张图片

通过数组存储图片 URL,循环调用预加载函数。

js实现图片预加载

const imageUrls = [
  'https://example.com/image1.jpg',
  'https://example.com/image2.png'
];

imageUrls.forEach(url => preloadImage(url));

使用 Promise 优化异步加载

结合 Promise 实现更可控的异步加载逻辑,支持链式调用或 async/await

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

// 示例用法
Promise.all([
  preloadWithPromise('https://example.com/image1.jpg'),
  preloadWithPromise('https://example.com/image2.png')
])
  .then(() => console.log('All images loaded'))
  .catch(err => console.error(`Error loading: ${err}`));

兼容性注意事项

  • 现代浏览器均支持 Image 对象,无需额外兼容处理。
  • 若需支持更早版本(如 IE9 以下),可通过 document.createElement('img') 替代 new Image()

性能优化建议

  • 避免一次性加载过多图片,可分批次或按需加载。
  • 对动态生成的图片 URL,确保先预加载再使用。

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

相关文章

vue实现加载

vue实现加载

Vue 实现加载功能的方法 使用 v-if 或 v-show 控制加载状态 在模板中通过 v-if 或 v-show 控制加载动画的显示与隐藏。v-if 会完全移除 DOM 元素,而 v-show 仅…

jquery加载

jquery加载

jQuery 加载方法 使用 CDN 加载 jQuery 推荐通过公共 CDN(如 Google、Microsoft 或 jQuery 官方)加载,速度快且可能已被浏览器缓存。 <scri…

jquery页面加载

jquery页面加载

jQuery 页面加载事件 在 jQuery 中,页面加载事件通常通过 $(document).ready() 或简写的 $() 来实现。这种方式确保代码在 DOM 完全加载后执行,但无需等待图片等资…

vue实现加载条

vue实现加载条

Vue 实现加载条的方法 使用第三方库(如 NProgress) 安装 NProgress 库: npm install nprogress 在 Vue 项目中引入并使用: import NPro…

vue 实现图片单选

vue 实现图片单选

Vue 实现图片单选功能 在 Vue 中实现图片单选功能,可以通过结合 v-model 和自定义事件来实现。以下是具体实现方法: 方法一:使用 v-model 和计算属性 创建一个 Vue 组件…

vue实现触底加载

vue实现触底加载

触底加载的实现方法 在Vue中实现触底加载功能,可以通过监听滚动事件或使用Intersection Observer API来实现。以下是两种常见的方法: 监听滚动事件 在组件中监听滚动事件,计算…