js的new Image()做图片预加载

H5 图片系列—new Image()加载图片是否会有缓存,从而img标签获取同一数据源显示时使用该缓存数据? new Image() 加载图片后,浏览器会利用缓存,避免重复下载相同的图片。Vue 中的会使用图片的 URL,如果该 URL 被缓存,浏览器会直接从缓存中加载,无需再次发起网络请求。 阅读详情

创建一个Image对象:var a=new Image();    定义Image对象的src: a.src=”xxx.gif”;    这样做就相当于给浏览器缓存了一张图片。

 

图像对象:

建立图像对象:图像对象名称=new Image([宽度],[高度])

图像对象的属性: border complete height hspace lowsrc name src vspace width

图像对象的事件:onabort onerror onkeydown onkeypress onkeyup onload

需要注意的是:src 属性一定要写到 onload 的后面,否则程序在 IE 中会出错。

参考代码:

 
  1. var img=new Image();  
  2. img.onload=function(){alert("img is loaded")};  
  3. img.onerror=function(){alert("error!")};  
  4. img.src="http://www.abaonet.com/img.gif";  
  5. function show(){alert("body is loaded");};  
  6. window.onload=show;  

运行上面的代码后,在不同的浏览器中进行测试,发现 IE 和 FF 是有区别的,在 FF 中,img 对象的加载包含在 body 

的加载过程中,既是 img加载完之后,body 才算是加载完毕,触发 window.onload 事件。

在 IE 中,img 对象的加载是不包含在 body 的加载过程之中的,body 加载完毕,window.onload 事件触发时,img

对象可能还未加载结束,img.onload事件会在 window.onload 之后触发。

  根据上面的问题,考虑到浏览器的兼容性和网页的加载时间,尽量不要在 Image 对象里放置过多的图片,否则在 FF 下

会影响网页的下载速度。当然如果你在 window.onload 之后,执行预加载函数,就不会有 FF 中的问题了。

可以通过Image对象的complete 属性来检测图像是否加载完成(每个Image对象都有一个complete属性,当图像处于

装载过程中时,该属性值false,当发生了onload、onerror、onabort中任何一个事件后,则表示图像装载过程结束(不管成

没成功),此时complete属性为true)

  1. var img = new Image();    
  2. img.src = oImg[0].src = this.src.replace(/small/,"big");    
  3. oDiv.style.display = "block";    
  4. img.complete ? oDiv.style.display = "none" : (oImg[0].onload = function() {oDiv.style.display = "none"})    

 

注:

ie 火狐等大众浏览器均支持 Image对象的onload事件。

ie8及以下、opera 不支持onerror事件

下面截取一段Amazon使用的图片预加载js代码可供参考:

  1. amznJQ.available("jQuery", function() {  
  2.   jQuery(window).load(function() { setTimeout(function() {  
  3.     var imageAssets = new Array();  
  4.     var jsCssAssets = new Array();  
  5.       imageAssets.push("https://images-na.ssl-images-amazon.com/images/G/09/x-locale/common/buy-buttons/review-1-click-order._V171143523_.gif");  
  6.       imageAssets.push("https://images-na.ssl-images-amazon.com/images/G/09/x-locale/common/buttons/continue-shopping._V192262037_.gif");  
  7.       imageAssets.push("https://images-na.ssl-images-amazon.com/images/G/09/x-locale/common/buy-buttons/thank-you-elbow._V192261665_.gif");  
  8.       imageAssets.push("https://images-na.ssl-images-amazon.com/images/G/09/x-locale/communities/social/snwicons_v2._V383421867_.png");  
  9.       imageAssets.push("https://images-na.ssl-images-amazon.com/images/G/09/checkout/assets/carrot._V192555707_.gif");  
  10.       imageAssets.push("https://images-na.ssl-images-amazon.com/images/G/09/checkout/thank-you-page/assets/yellow-rounded-corner-sprite._V192555699_.gif");  
  11.       imageAssets.push("https://images-na.ssl-images-amazon.com/images/G/09/checkout/thank-you-page/assets/white-rounded-corner-sprite._V212531219_.gif");  
  12.       imageAssets.push("https://images-na.ssl-images-amazon.com/images/G/09/gno/beacon/BeaconSprite-JP-02._V393500380_.png");  
  13.       imageAssets.push("https://images-na.ssl-images-amazon.com/images/G/09/x-locale/common/transparent-pixel._V386942697_.gif");  
  14.       imageAssets.push("https://images-na.ssl-images-amazon.com/images/I/61AdS2XVkGL._SX35_.jpg");  
  15.       jsCssAssets.push("https://images-na.ssl-images-amazon.com/images/G/01/browser-scripts/jp-site-wide-css-beacon/site-wide-6800426958._V1_.css");  
  16.       jsCssAssets.push("https://images-na.ssl-images-amazon.com/images/G/01/browser-scripts/navbarCSSJP-beacon/navbarCSSJP-beacon-min-583273174._V1_.css");  
  17.       jsCssAssets.push("https://images-na.ssl-images-amazon.com/images/G/01/browser-scripts/navbarJS-beacon/navbarJS-beacon-min-1773974689._V1_.js");  
  18.       jsCssAssets.push("https://images-na.ssl-images-amazon.com/images/G/01/browser-scripts/site-wide-js-1.2.6-beacon/site-wide-5626886881._V1_.js");  
  19.   
  20.     // pre-fetching image assets  
  21.     for (var i=0; i<imageAssets.length; i++) {  
  22.        new Image().src = imageAssets[i];  
  23.     }  
  24.     // pre-fetching css and js assets based on different browser types  
  25.     var isIE = /*@cc_on!@*/0;  
  26.     var isFireFox = /Firefox/.test(navigator.userAgent);  
  27.     if (isIE) {  
  28.       for (var i=0; i<jsCssAssets.length; i++) {  
  29.         new Image().src = jsCssAssets[i];  
  30.       }  
  31.     }  
  32.     else if (isFireFox) {  
  33.       for (var i=0; i<jsCssAssets.length; i++) {  
  34.         var o =  document.createElement("object");  
  35.         o.data = jsCssAssets[i];  
  36.         o.width = o.height = 0;  
  37.         document.body.appendChild(o);  
  38.       }  
  39.     }  
  40.   }, 2000); });  
  41. });  

 

XIAO ESP32S3 Sense摄像头与麦克风实战:从硬件连接到AI语音视觉项目 本文详细介绍了如何使用Seeed Studio XIAO ESP32S3 Sense开发板进行AI语音视觉项目开发。从硬件连接到Arduino环境搭建,再到摄像头拍照、视频流传输、麦克风录音等实战操作,最后引导读者探索基于TensorFlow Lite Micro的语音唤醒和SenseCraft AI的图像识别等AI应用,为物联网和边缘AI项目提供了完整的入门指南。 阅读详情

相关推荐

运维与软件实施课表

运维与软件实施课表 课程 章节编号 章节 课程地址 软件及操作系统基础 ch01 软件及操作系统基础01 实施、运维工程师基本技能:https://blog.youkuaiyun.com/qq_28189423/article/details/82700539 老毛桃制作winPE镜像:https://blog.youkuaiyun.com/qq_2818942...

Mr.O~的博客 1万+

js的 new image()用法

创建一个Image对象:var a=new Image();    定义Image对象的src: a.src=”xxx.gif”;    这样做就相当于给浏览器缓存了一张图片。 图像对象: 建立图像对象:图像对象名称=new Image([宽度],[高度]) 图像对象的属性: border complete height hspace lowsrc name src vspace width...

余百炼的博客 6万+

STM32硬件SPI驱动W5500以太网模块全流程(附避坑指南)

本文详细介绍了STM32硬件SPI驱动W5500以太网模块的全流程,包括硬件架构设计、SPI接口选型、官方驱动移植、网络协议栈配置与优化等关键步骤。通过实战案例和性能对比数据,帮助开发者快速实现稳定高效的网络连接,特别提供了常见问题排查指南和性能调优技巧。

weixin_29194693的博客 268

javascript学习之<img> 元素属性和方法

img>元素用于插入图片,主要继承了 HTMLImageElement 接口。浏览器提供一个原生构造函数Image,用于生成实例。Image构造函数可以接受两个整数作为参数,分别表示元素的宽度和高度。// 语法​// 用法实例的src属性可以定义图像的网址。新生成的实例并不属于文档的一部分。如果想让它显示在文档中,必须手动插入文档。除了使用Image构造,下面的方法也可以得到实例。的成员节点选取方法(比如)得到的节点生成的。

白话机器学习 2408

华为铁三角(AR、SR、FR)的考核指标设计

以和为核心,通过和实现协同。考核维度分为和,并随市场阶段动态调整权重。

从技术实践立足,从项目管理方法论延伸思考 2769

从零构建智慧农业监测终端:STM32数据采集与LoRa组网实战

本文详细介绍了如何从零构建智慧农业监测终端,涵盖STM32数据采集与LoRa组网实战。通过DHT22温湿度传感器和YL-69土壤湿度传感器实现精准环境监测,结合LoRa无线传输技术解决偏远农田信号问题。文章还分享了硬件选型、电路设计、低功耗优化及Flutter跨平台应用开发等关键技巧,助力农业智能化升级。

weixin_29172963的博客 357

使用new Image() 简单实现图片预加载

在 Vue 中实现图片预加载是一个简单而高效的过程,通常会通过生命周期钩子函数(如created)来管理。你可以使用创建图片对象,设置其src属性来实现图片的预加载,减少后续访问时的等待时间。具体实现根据自己项目来写。原文:https://juejin.cn/post/7441842559386583077。

gaotlantis的博客 2654

Java Swing之多文档界面设计-JDesktopPane、JInternalFrame类简单应用示例

Java MDI多文档界面是一种用户界面风格,允许在一个主窗口中包含多个子窗口(文档窗口),每个子窗口可以显示不同的内容或功能模块,从而可以满足用户打开不同窗口完成不同功能的需求。开发多文档程序,一般需要JDesktopPane(桌面面板类)和JInternalFrame(内部窗体类)两个类。以下简单介绍,最后通过一个实例介绍实现逻辑。

编程语言教学工作者的博客 2209

new.image()

在 IE 中,img 对象的加载是不包含在 body 的加载过程之中的,body 加载完毕,window.onload 事件触发时,img对象可能还未加载结束,img.onload事件会在 window.onload 之后触发。原理:创建image对象,image对象的src为请求服务器的地址,当image对象请求图片资源时,服务发送成功。原理:创建Image对象,将image对象的src分别指向需加载的图片地址,图片被请求,因为image对象没有显示在页面上,所以不会对页面布局产生影响。

qq_42507521的博客 890

基于AMD AU15P FPGA的SLVS-EC桥PCIe设计方案分享

各位FPGAer周末愉快,今天熊猫君分享一个基于AMD AU15P FPGA的SLVS-EC桥PCIe设计方案。

haoxingheng的专栏 1445

医疗影像分析实战:肺炎X光片分类与分割

医疗影像分析实战:肺炎X光片分类与分割 ,人工智能,计算机视觉,大模型,AI,在医疗领域,医疗影像分析技术凭借其高效、精准的特点,成为疾病诊断与治疗的重要辅助手段。肺炎作为一种常见的呼吸道疾病,严重威胁人类健康,通过 X 光片对肺炎进行诊断是临床常用方法。利用计算机技术实现肺炎 X 光片的自动分类与分割,不仅能减轻医生的工作负担,还能提高诊断的准确性和效率。本文将深入讲解肺炎 X 光片分类与分割的实战过程,结合大量代码示例和关键概念解析,帮助读者掌握相关技术。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

js的 new image()做图片预加载

创建一个Image对象:var a=new Image();    定义Image对象的src: a.src=”xxx.gif”;    这样做就相当于给浏览器缓存了一张图片。   图像对象: 建立图像对象:图像对象名称=new Image([宽度],[高度]) 图像对象的属性: border complete height hspace lowsrc name src v

yzbben的博客 1万+

【二 Deepseek+Coze案例】【 2.2 Coze + Deepseek 实现小红书爆款笔记:打造专属Agent智能体】

摘要 本文介绍了如何利用Coze平台和Deepseek模型构建自动化Agent智能体,用于生成和优化小红书爆款笔记。文章首先分析了爆款笔记的核心特征,包括精准定位、吸引标题、实用内容、精美排版和热门标签。随后提出Agent智能体的功能需求,涵盖热点追踪、内容生成与优化、数据分析及自动发布等模块。在技术实现上,详细阐述了从环境配置、数据采集到内容生成与优化的全流程,并提供了Python代码示例,展示如何调用Coze函数获取热点数据及竞品笔记。该方案通过智能化的内容创作与运营策略,帮助用户高效打造高曝光的小红书

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 2276

图片预加载

使用css中的background的属性 通过CSS的background属性将图片预加载到屏幕外的背景上。只要这些图片的路径保持不变,当它们在WEB页面的其他地方被调用时,浏览器就会在渲染过程中使用预加载(缓存)的图片。 缺点:由于CSS是同页面的其他内容一起加载,这也就意味着增加了页面的整体加载时间。 使用js中的 new Image()方法(推荐) 步骤1、使用new Image()动态的创建img var newImg = new Image(); 步骤2、设置其src为要加载的

haha_556的博客 591

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

jquery实现图片预加载

代码如下 <div class="box"> <p> <a href="javascript:;" class="btn" data-control="prev">上一页</a> <a href="javascript:;" class="btn" data-control="next">下一页...

qq_39025670的博客 741

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

资源预加载

资源预加载可以提升用户体验,如果每次用户打开页面都要加载图片,js,css等资源,会影响用户体验。资源预加载可以一定程度上改善这种情况。 我们可以做的是,但第一个页面load完的时候,在用户阅读网页的空隙,把下一个页面所用的资源提前加载过来cache住,这样下个页面就直接读缓存资源了,这样可以一定程度改善用户体验。 那么预加载资源需要解决的主要问题是JS加载过来不会被直接...

weixin_30755709的博客 160

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

预加载图片

技术:在 JavaScript 中,new Image() 是创建图像对象的常用方式,用于动态加载、预加载或操作图片。

qq_42555116的博客 237

图片的预加载

昨天碰到个问题,页面要预先加载几张图片,于是直接在某个display:none的div中加了几个img,这样在页面加载的时候图片也加载了,后来发现这样在页面打开时太慢,就用jquery的load('src')方法在页面加载完成的时候去取图片   结果今天早上发现原来img是可以new的,new Image是可以产生一个image的dom对象的,然后为这个image指定src就OK了,   ...

smiky的专栏 121

前端性能优化--懒加载和预加载篇

点击上方蓝字关注「悲伤日记」 愿我如星君如月 夜夜流光相皎洁 1.什么是懒加载?图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源...

Crazymryan的博客 1181

vue Element-ui对图片上传和选用时的比例控制

Image 对象是 JS 中的内置对象,它代表嵌入的图像。当我们创建一个 Image 对象时,就相当于给浏览器缓存了一张图片,Image 对象也常用来做预加载图片(也就是将图片预先加载到浏览器中,当浏览图片的时候就能享受到极快的加载速度)。在后台上传图片和选用已经上传的图片时,往往会因为图片的比例控制不到位导致在客户端渲染时效果差强人意,虽然可以在操作时选择合适的比例上传,但必要的控制还是能完成渲染时良好的体验,今天就分享一个vue+Element-ui上传图片和选用图片场景时,对图片比例控制的方法。

weixin_71169215的博客 484

图片预装载使页面短时间内刷新的问题!!

前几天我们让团队里一个新人做图片轮转的效果,告诉他用图片预装载(new Image())效果会好一点今天看到他给我的javascript代码是这样的 img4 = new Image();img4.src = images/zn/banner10.jpg;url4 = new Image();url4.src = ; img4 = new Image();

winstonczc的专栏 494

用javascript Image对象实现获取图片实际宽高的方法

最近看百度图片的效果,有个获取图片来源,图片实际大小,图片出处的信息!用jquery的width(),height()方法显然不行,就去百度搜了下!找了很久以作备忘!在预加载中也经常用到 废话不多说上代码,已测试! var$img = $('li img');//获取图片 $img.each(function(){ ...

weixin_30725315的博客 271

javascript图片预先加载

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> </body> &l...

weixin_30786657的博客 118

使用new Image()进行预加载

概述 这篇博文记录了用new Image()进行预加载的总结,供以后开发时参考,相信对其他人也有用。 旧的预加载 一般我们为了让背景图更快的加载,我们常常把背景图放在一个display:none的img标签里面进行预加载,如下面代码所示: <div class="preload" style="display: none;"> <img src="bg1.jpg" alt...

weixin_30507481的博客 837
上一篇: CSS中从大图中扣取小图的完整教程(background-position应用)
下一篇: JS创建函数:函数声明和函数表达式
lijian820708
博客等级 码龄15年 3粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值