首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制HTML中的图像加载顺序

控制HTML中的图像加载顺序
EN

Stack Overflow用户
提问于 2010-11-18 11:46:41
回答 4查看 35.7K关注 0票数 24

有没有办法控制网页上图片的加载顺序?我正在考虑尝试通过首先加载一个轻量级的“加载”图形来模拟预加载器。有什么想法吗?

谢谢

EN

回答 4

Stack Overflow用户

发布于 2010-11-18 11:53:10

使用Javascript,稍后填充图像src属性。#告诉浏览器链接到页面上的URL,因此不会向服务器发送任何请求。(如果src属性为空,则仍会向服务器发出请求-这不是很好。)

组装一个图像地址数组,并递归遍历它,当每个图像的onloadonerror方法返回一个值时,加载图像并调用一个递归函数。

HTML:

代码语言:javascript
复制
<img src='#' id='img0' alt='[]' />
<img src='#' id='img1' alt='[]' />
<img src='#' id='img2' alt='[]' />

JS:

代码语言:javascript
复制
var imgAddresses = ['img1.png','img2.jpg','img3.gif'];

function loadImage(counter) {
  // Break out if no more images
  if (counter==imgAddresses.length) { return; }

  // Grab an image obj
  var I = document.getElementById("img"+counter);

  // Monitor load or error events, moving on to next image in either case
  I.onload = I.onerror = function() { loadImage(counter+1); }

  //Change source (then wait for event)
  I.src = imgAddresses[counter];
}

loadImage(0);

你甚至可以玩玩document.getElementsByTagName("IMG")

顺便说一句,如果你需要一个加载图像,this is a good place to start

编辑

为了避免向服务器发出多个请求,您可以使用几乎相同的方法,只是在准备加载之前不要插入图像元素。让一个<span>容器等待每个镜像。然后,循环遍历,获取span对象,并动态插入image标记:

代码语言:javascript
复制
var img = document.createElement("IMG");
document.getElementById('mySpan').appendChild(img);
img.src = ...

然后,只在创建元素时发出一次图像请求。

票数 22
EN

Stack Overflow用户

发布于 2015-09-14 09:54:39

我认为这篇文章https://varvy.com/pagespeed/defer-images.html提供了一个非常好和简单的解决方案。请注意解释如何使用以下命令创建“空”标记的部分:

为了避免

要显示加载图像,只需将其放入HTML中,然后在适当的时刻/事件更改它。

票数 5
EN

Stack Overflow用户

发布于 2010-11-18 12:15:21

只需在任何其他图像之前包含“加载”图像即可。它们通常包含在页面的最顶部,然后当页面加载完成时,它们会被JS隐藏。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4211519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档