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 相关文章推荐
使用正则替换变量
May 05 Javascript
基于JQuery框架的AJAX实例代码
Nov 03 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
Apr 20 Javascript
单击复制文字兼容各浏览器的完美解决方案
Jul 04 Javascript
Bootstrap源码解读模态弹出框(11)
Dec 28 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
Jan 22 Javascript
基于vue cli 通过命令行传参实现多环境配置
Jul 12 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
Sep 05 jQuery
JavaScript函数的特性与应用实践深入详解
Dec 30 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
js实现简单商品筛选功能
Feb 02 Javascript
vue 实现上传组件
May 31 Vue.js
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
set_include_path在win和linux下的区别
2008/01/10 PHP
在JavaScript中调用php程序
2009/03/09 PHP
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
Python中将dataframe转换为字典的实例
2018/04/13 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
使用Python实现音频双通道分离
2020/12/25 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
打架检讨书2000字
2014/02/22 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
建筑工地文明标语
2014/10/09 职场文书
助学感谢信范文
2015/01/21 职场文书
暑假打工感想
2015/08/07 职场文书
pycharm代码删除恢复的方法
2021/06/26 Python
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers