当前位置: 首页 > news >正文

设计模式代理

虚拟代理实现图片预加载

预加载图片在Web开发中十分常用,其通过异步的方式加载图片,利用一张loading图片占位。等图片加载好之后把图片填充到img节点中。

var myImage = (function(){
  var imgNode = document.createElement('img')
  document.body.appendChild(imgNode)
  return {
    setSrc: function(src){
      imgNode.src = src
    }
  }
})()

var proxyImage = (function(){
  var img = new Image()
  img.onload = function(){
    myImage.setSrc(this.src)
  }
  return {
    setSrc: function(src){ 
      myImage.setSrc('loading.gif')
      img.src = src
    }
  }
})()

proxyImage.setSrc('realImage.jpg')

通过proxyImage间接的访问了MyImageproxyImage控制了客户对MyImage的访问,并且在此过程中加入了一些额外的操作,比如在真正的图片加载好之前,先把img节点的src设置为一张loading图片。

 

转载于:https://www.cnblogs.com/yayaxuping/p/9680266.html

相关文章:

  • [国家集训队]Crash的文明世界
  • 说说 C 语言编程利器 CLion
  • Netty系列文章之构建HTTP(HTTPS)应用程序
  • 配置Redis客户端
  • c# 读取blob数据
  • 一文详解达观数据知识图谱技术与应用——技术直播回顾
  • shell日志颜色处理
  • 关于矩阵自由度的解释
  • 使用包和测试
  • 2018 noip 考前临死挣扎
  • vue增加按钮到表头单元格的解决方法
  • PostgreSQL 10.1 手册_部分 IV. 客户端接口_第 33 章 libpq - C 库_33.19. 在线程化程序中的行为...
  • facl权限(getfacl/setfacl)
  • Python打包系统简单入门
  • 动画开发
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • CSS 提示工具(Tooltip)
  • JAVA SE 6 GC调优笔记
  • JavaScript-Array类型
  • Javascript基础之Array数组API
  • PermissionScope Swift4 兼容问题
  • php的插入排序,通过双层for循环
  • underscore源码剖析之整体架构
  • vue-cli在webpack的配置文件探究
  • 安装python包到指定虚拟环境
  • 从0实现一个tiny react(三)生命周期
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 浮动相关
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 你真的知道 == 和 equals 的区别吗?
  • 普通函数和构造函数的区别
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 新手搭建网站的主要流程
  • 学习JavaScript数据结构与算法 — 树
  • Java数据解析之JSON
  • 数据可视化之下发图实践
  • ​linux启动进程的方式
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #define 用法
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (a /b)*c的值
  • (二)构建dubbo分布式平台-平台功能导图
  • (四)JPA - JQPL 实现增删改查
  • (五)Python 垃圾回收机制
  • (一)基于IDEA的JAVA基础10
  • (原)本想说脏话,奈何已放下
  • (转)Google的Objective-C编码规范
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .Net 6.0 处理跨域的方式
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net和jar包windows服务部署
  • .net知识和学习方法系列(二十一)CLR-枚举