创建一个全局数组变量用于存储Image对象

var images = [];

创建Image对象并赋值src,将图片缓存到浏览器

function preload() {
   for (i = 0; i < preload.arguments.length; i++) {
      images[i] = new Image();
      images[i].src = preload.arguments[i];
   }
}

通过ajax获取页面将要加载的图片地址

function ajaxGetImgstr() {
  //创建xhr对象
  var xhr;
  if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  } else {
    xhr = new ActiveXObject('Microsoft.XMLHTTP');
  }
  //异步接受响应
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
      var data = JSON.parse(xhr.responseText); //data是一个数组,数组项为图片地址
      console.log(data);
      preload(...data);
    }
  }
  //发送请求
  xhr.open('get', 'http://xxx/xxx/xxx', true);
  xhr.send();
}

利用西蒙·威利森 (Simon Willison)——jQuery框架的开发者之一编写的addLoadEvent函数

function addLoadEvent(func) {
  var oldonload = window.onload;//将现有的事件处理函数的值存入变量中
  if (typeof window.onload != 'function') {
    window.onload = func;//如果这个事件处理函数没有绑定任何函数,就把新函数添加给它
  } else {
    window.onload = function() {
     oldonload();
      func();//如果已经绑定了函数,就把新函数追加到现有指令的末尾
    }
  }
}

将ajaxGetImgstr添加到页面加载完成后要执行函数中

addLoadEvent(ajaxGetImgstr);
内容来源于网络如有侵权请私信删除