js预加载图片方法汇总


Posted in Javascript onJune 15, 2015

本文实例汇总了js预加载图片方法。分享给大家供大家参考。具体分析如下:

1. 纯CSS:

#preload-01 {
background: url(http://domain.tld/image-01.png) no-repeat -9999px -9999px;
}
#preload-02 {
background: url(http://domain.tld/image-02.png) no-repeat -9999px -9999px;
}
#preload-03 {
background: url(http://domain.tld/image-03.png) no-repeat -9999px -9999px;
}

2. JS+CSS优化:

// better image preloading @ http://perishablepress.com/press/2009/12/28/3-ways-preload-images-css-javascript-ajax/
function preloader() {
  if (document.getElementById) {
    document.getElementById("preload-01").style.background = "url(http://domain.tld/image-01.png) no-repeat -9999px -9999px";
    document.getElementById("preload-02").style.background = "url(http://domain.tld/image-02.png) no-repeat -9999px -9999px";
    document.getElementById("preload-03").style.background = "url(http://domain.tld/image-03.png) no-repeat -9999px -9999px";
  }
}
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
addLoadEvent(preloader);

3. JS代码1:

<div class="hidden">
  <script type="text/javascript">
    <!--//--><![CDATA[//><!--
      var images = new Array()
      function preload() {
        for (i = 0; i < preload.arguments.length; i++) {
          images[i] = new Image()
          images[i].src = preload.arguments[i]
        }
      }
      preload(
        "http://domain.tld/gallery/image-001.jpg",
        "http://domain.tld/gallery/image-002.jpg",
        "http://domain.tld/gallery/image-003.jpg"
      )
    //--><!]]>
  </script>
</div>

4. JS代码2:

<div class="hidden">
  <script type="text/javascript">
    <!--//--><![CDATA[//><!--
      if (document.images) {
        img1 = new Image();
        img2 = new Image();
        img3 = new Image();
        img1.src = "http://domain.tld/path/to/image-001.gif";
        img2.src = "http://domain.tld/path/to/image-002.gif";
        img3.src = "http://domain.tld/path/to/image-003.gif";
      }
    //--><!]]>
  </script>
</div>

5. JS代码优化2:

function preloader() {
  if (document.images) {
    var img1 = new Image();
    var img2 = new Image();
    var img3 = new Image();
    img1.src = "http://domain.tld/path/to/image-001.gif";
    img2.src = "http://domain.tld/path/to/image-002.gif";
    img3.src = "http://domain.tld/path/to/image-003.gif";
  }
}
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
addLoadEvent(preloader);

6. Ajax代码1:

window.onload = function() {
  setTimeout(function() {
    // XHR to request a JS and a CSS
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'http://domain.tld/preload.js');
    xhr.send('');
    xhr = new XMLHttpRequest();
    xhr.open('GET', 'http://domain.tld/preload.css');
    xhr.send('');
    // preload image
    new Image().src = "http://domain.tld/preload.png";
  }, 1000);
};

7. Ajax代码2:

window.onload = function() {
  setTimeout(function() {
    // reference to <head>
    var head = document.getElementsByTagName('head')[0];
    // a new CSS
    var css = document.createElement('link');
    css.type = "text/css";
    css.rel = "stylesheet";
    css.href = "http://domain.tld/preload.css";
    // a new JS
    var js = document.createElement("script");
    js.type = "text/javascript";
    js.src = "http://domain.tld/preload.js";
    // preload JS and CSS
    head.appendChild(css);
    head.appendChild(js);
    // preload image
    new Image().src = "http://domain.tld/preload.png";
  }, 1000);
};

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jquery keypress,keyup,onpropertychange键盘事件
Jun 25 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
May 24 Javascript
js使用心得分享
Jan 13 Javascript
初识Node.js
Mar 20 Javascript
jquery实现右键菜单插件
Mar 29 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
Sep 26 Javascript
js实现带农历和八字等信息的日历特效
May 16 Javascript
微信小程序 scroll-view实现锚点滑动的示例
Dec 06 Javascript
基于vue通用表单解决方案的思考与分析
Mar 16 Javascript
three.js利用卷积法如何实现物体描边效果
Nov 27 Javascript
微信小程序跨页面传递data数据方法解析
Dec 13 Javascript
使用webpack搭建vue环境的教程详解
Dec 31 Javascript
jquery实现兼容IE8的异步上传文件
Jun 15 #Javascript
JavaScript中使用Math.floor()方法对数字取整
Jun 15 #Javascript
jQuery实现自动调整字体大小的方法
Jun 15 #Javascript
JavaScript中使用指数方法Math.exp()的简介
Jun 15 #Javascript
Jquery简单实现GridView行高亮的方法
Jun 15 #Javascript
简介JavaScript中Math.cos()余弦方法的使用
Jun 15 #Javascript
JavaScript中的Math.atan2()方法使用详解
Jun 15 #Javascript
You might like
php adodb连接不同数据库
2009/03/19 PHP
PHP下escape解码函数的实现方法
2010/08/08 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
DEFER怎么用?
2006/07/01 Javascript
Jquery下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
2010/03/01 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
Python fileinput模块使用实例
2015/06/03 Python
Python中的__slots__示例详解
2017/07/06 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
清洁工表扬信
2014/01/08 职场文书
个人委托书范本
2014/09/13 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书
Java并发编程之Executor接口的使用
2021/06/21 Java/Android
在项目中使用redis做缓存的一些思路
2021/09/14 Redis