- 浏览: 313254 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (243)
- Core Java (13)
- Java (12)
- Android (2)
- Lucene (3)
- J2EE (3)
- Hibernate (2)
- Jsp & Servlet (3)
- Struts2 (3)
- Spring (5)
- JSF (6)
- RichFaces (2)
- HTML & JS & DOM & CSS (87)
- browser (1)
- Ajax & A4J (2)
- Workflow (1)
- Maven (3)
- Linux (2)
- VM & VBOX (1)
- Tomcat (1)
- Cache (3)
- Others (36)
- design (1)
- PHP (1)
- Try.js (1)
- HTML5 && CSS3 && ECMAScript5 (26)
- 疯言疯语 (5)
- mongodb (2)
- Hardware Common Sence (1)
- RESTful (3)
- Nginx (2)
- web安全 (8)
- Page Design (1)
- web performance (1)
- nodejs (4)
- python (1)
最新评论
-
New_Mao_Er:
求最新的版本破解啊!!!
Omondo eclipseUML插件破解 -
konglx:
讲得仔细,谢了
全面分析 Spring 的编程式事务管理及声明式事务管理 -
cilendeng:
对所有post有效只能使用过滤器
说说Tomcat的Server.xml的URIEncoding=‘UTF-8’配置 -
jiulingchen:
mark了,灰常感谢!
JAVA中最方便的Unicode转换方法 -
anlaetion:
这算法可以有
js 字符串搜索算法
网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考虑流量的话,大可以像pconline一样每个页面只显示一张图片,让用户每看一张图片就
需要
重新下载一下整个页面。不过,在web2.0时代,更多人愿意用javascript来实现一个图片浏览器,让用户无需等待过长的时间就能看到其他图片。
知道了一张图片的地址,需要把它在一个固定大小的html容器(可以是div等)里边显示出来,最重要的当然是需要知道这张即将显示的图片的宽和高,然后
再结合容器的宽和高,按照一定的缩放比例使图片显示出来。因此,实现图片预加载就成为图片浏览器的核心功能了。
做过图片翻转效果的朋友其实都知道,要让图片轮换的时候不出现等待,最好是先让图片下载到本地,让浏览器缓存起来。这时,一般都会用到js里边的
Image对象。一般的手段无非这样:
function preLoadImg(url) { var img = new Image(); img.src = url; }
通过调用preLoadImg函数,传入图片的url,就能使图片预先下载下来了。实际上,这里用到的预下载功能也和这基本一致。图片预下载下来后,通过
img的width和height属性,就能知道图片的宽和高了。但是需要考虑到,在做图片浏览器功能时,图片都是实时显示的。比如你点了显示的按钮,这
个时候才会调用上边类似的代码来加载图片。因此,如果你直接用img.width的时候,图片还没有完全下载下来。因此,需要用一些异步的方法,等到图片
下载完毕的时候才会再对img的width和height进行调用。
实现这样的异步方法实际上不难,图片的下载完毕事件也很简单,就是简单的onload事件。因此,我们可以写出下面的代码:
function loadImage(url, callback) { var img = new Image(); img.src = url; img.onload = function(){ //图片下载完毕时异步调用callback函数。 callback.call(img); // 将callback函数this指针切换为img。 }; }
好了,再来写一个测试用例。
function imgLoaded(){ alert(this.width); } <input type="button" value="loadImage" onclick="loadImage('aaa.jpg',imgLoaded)"/>
在firefox中测试一下,发现不错,果然和预想的效果一样,在图片下载后,就会弹出图片的宽度来。无论点击多少次或者刷新结果都一样。
不过,做到这一步,先别高兴太早——还需要考虑一下浏览器的兼容性,于是,赶紧到ie里边测试一下。没错,同样弹出了图片的宽度。但是,再点击load的
时候,情况就不一样了,什么反应都没有了。刷新一下,也同样如此。
经过对多个浏览器版本的测试,发现ie6、opera都会这样,而firefox和safari则表现正常。其实,原因也挺简单的,就是因为浏览器的缓存
了。当图片加载过一次以后,如果再有对该图片的请求时,由于浏览器已经缓存住这张图片了,不会再发起一次新的请求,而是直接从缓存中加载过来。对于
firefox和safari,它们视图使这两种加载方式对用户透明,同样会引起图片的onload事件,而ie和opera则忽略了这种同一性,不会引
起图片的onload事件,因此上边的代码在它们里边不能得以实现效果。
怎么办呢?最好的情况是Image可以有一个状态值表明它是否已经载入成功了。从缓存加载的时候,因为不需要等待,这个状态值就直接是表明已经下载了,而
从http请求加载时,因为需要等待下载,这个值显示为未完成。这样的话,就可以搞定了。
经过一些分析,终于发现一个为各个浏览器所兼容的Image的属性——complete。所以,在图片onload事件之前先对这个值做一下判断即可。最
后,代码变成如下的样子:
function loadImage(url, callback) { var img = new Image(); //创建一个Image对象,实现图片的预下载 img.src = url; if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数 callback.call(img); return; // 直接返回,不用再处理onload事件 } img.onload = function () { //图片下载完毕时异步调用callback函数。 callback.call(img);//将回调函数的this替换为Image对象 }; };
经过这么一番折腾,总算是让各个浏览器都能满足我们的目标了。虽然代码很简单,但是却把图片浏览器中最核心的问题解决掉了,接下来你所要做的,仅仅是图片 如何呈现的问题了。
[转自 :http://www.cnblogs.com/comdeng/archive/2008/06/15/preload_image.html ]
发表评论
-
循环数组的逻辑怎么写
2015-03-23 10:24 650应用场景这样的: var imgUrls = [ ... -
发布`代码生成器`
2014-11-17 00:45 589闲话不说,直接上地址 npm: https://www. ... -
MutationObserver
2014-10-27 15:29 1102MutationObserver MutationObse ... -
a simple mvvm library - bird
2014-10-09 18:26 733see here:https://github.com/i ... -
遍历dom tree是一件相当耗时的事情
2014-09-23 01:15 780遍历dom tree是一件相当耗时的事情,尤其是在遍历的同时 ... -
今天再讲下js里的继承
2014-09-18 00:27 700js的继承说简单也很简单,请看: function ... -
Text 类型
2014-09-05 18:52 850文本节点由Text类型表 ... -
JavaScript插入动态脚本
2014-09-05 18:47 647动态脚本指的是在页面加载时不存在,但将来的某一时刻通过修改该 ... -
innerHTML插入<style>元素
2014-09-05 18:37 1167通过innerHTML写入<style>元素没 ... -
CSS实现相对浏览器窗口定位彻底研究
2014-09-05 18:33 3732Web Developer / Designer 经常需要将 ... -
JavaScript插入动态样式
2014-09-05 18:07 613能够把CSS样式包含到HTML页面中的元素有两个。其中,& ... -
再理解jQuery;delete原型属性
2014-05-13 22:05 1869以前用jQuery的时候曾粗略看了它的源码,但却不求甚解。 ... -
javascript &&和||
2012-07-23 00:38 705一直以为 && 和 || ... -
undefined 和 void 0 的区别
2012-07-20 11:15 705在读backbone源码时看见这么一段代码: if ( ... -
Fiddler - 前端开发值得拥有
2012-07-16 14:41 838最近换了新工作,搬了新家,换了新室友,一切都在重新开始。 ... -
说说我的web前端之路,分享些前端的好书
2012-07-16 14:38 796WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没 ... -
JavaScript实现 页面滚动图片加载
2012-07-16 14:29 693又到了这个月的博客时间了,原计划是打算在这个月做一个的功 ... -
JavaScript 操作 Cookie
2012-07-16 11:18 691从事web开发也有些日 ... -
Javascript定义类(class)的三种方法
2012-07-12 12:35 590程序员们做了很多探索,研究如何用Javascript模拟”类” ... -
服务端解决跨源共享
2012-06-21 10:18 4521跨源资源共享是web开发领域中一个非常有趣的话题,互联网 ...
相关推荐
【图片浏览器——JS】是一种基于JavaScript技术实现的用于展示和浏览图片的应用程序。在网页设计中,图片浏览器常被用来创建交互式的图片展示效果,如幻灯片展示、图片轮播等,为用户提供友好的浏览体验。在这个项目...
这种技术允许网页只在用户实际看到的区域,即浏览器可视范围内加载图片,而不是一次性加载所有图片。这样可以显著减少初次页面加载时的数据量,提高页面加载速度,进而改善用户浏览体验。 图片懒加载的核心原理是...
在性能方面,考虑到大量图片的处理可能会消耗大量系统资源,DEMO可能采用了内存管理和图片预加载策略。对于大图,可能使用了分块加载技术,只加载当前显示部分,其余部分在需要时再加载。这样的设计有助于减少内存...
QueryLoader2的主要功能是通过预加载页面上的图片,并在加载过程中显示自定义的加载动画。这不仅能够告知用户页面正在加载,还能避免用户看到未完全加载的页面,从而提高网站的专业性和用户体验。 使用QueryLoader2...
一些浏览器试图通过在本地缓存中保存这些图片来解决此问题。这样一来可以顺序调用这些图片——但对于首次使用这些图片的时候仍然会存在延时。预装载就是一种在需要图片之前就将图片下载到缓存的技术。采用这样的...
2. **图片加载与显示**:JavaScript 可以通过`<img>`标签或者创建`Image`对象来加载图片,并根据需要显示或隐藏。在图片查看器中,通常会预先加载图片,以便在用户请求时快速响应。 3. **DOM操作**:Document ...
5. **调整图片和多媒体设置**:在浏览器设置中,可以控制是否加载图片和视频等多媒体内容。禁用这些可以加快页面加载速度,但可能导致部分功能无法正常使用。 6. **使用开发者工具**:"世界之窗"提供开发者工具,...
本文将详细介绍基于jQuery的图片预加载插件——ydxLazyLoad.js。 ### 1. 图片延迟加载(懒加载) 懒加载(Lazy Load)是一种优化网页性能的技术,它只加载视窗内或接近视窗的图片,当用户滚动页面时,再加载其他...
此外,可能还涉及到图片的预加载技术,确保图片在用户滚动到视窗范围内时已经准备就绪,避免延迟和卡顿。 土豆网的“豆单”是一个视频集合的概念,这里的“豆单列表”可能是指一系列包含图片和标题的条目,每个条目...
而现代Web 2.0应用倾向于使用JavaScript预加载图片,利用浏览器缓存机制提前下载图片,并在需要时直接显示,避免等待时间。 在实现图片预加载的JavaScript代码中,通常会使用Image对象,这是一个内置的JavaScript...
**JavaScript的图片浏览器——深入解析"imagesee"** 在当今互联网世界中,图像处理和展示是不可或缺的一部分。JavaScript,作为浏览器端最常用的脚本语言,为开发者提供了丰富的功能来实现各种交互式的图像浏览体验...
1. **预加载**:对于关键的图片,如首屏图片,可以在页面加载时预先加载。 2. **使用WebP或JPEG 2000格式**:这些格式能提供更好的压缩效果,减小图片大小,进一步提高加载速度。 3. **异步加载**:避免阻塞主线程,...
通过JavaScript,我们可以实现广告图片的自动化管理,例如自动轮播、手动点击切换、预加载下一张图片等功能,从而提高网页的互动性和视觉吸引力。 【标签】:“Javascript” 【知识点】: 1. **DOM操作**:...
4. 图片加载优化:可能涉及预加载技术,以确保图片在切换时能够快速显示,减少延迟感。 5. 响应式设计:为了兼容不同尺寸的屏幕和浏览器,可能采用了媒体查询或Flexbox/Gird布局等技术。 6. 浏览器兼容性:可能使用...
这种离线存储对于教育领域的e-learning应用特别有益,学生可以在没有网络的环境下继续学习,如观看预加载的视频教程,访问离线阅读材料等。 3. 应用场景与优势 HTML5的离线存储技术提高了移动应用的可用性和用户...
11. **性能优化**:包括预加载技术、资源加载优先级设定、内存管理等,都是提升浏览器性能的关键。 12. **第三方库集成**:为了增强功能,如广告拦截、下载管理等,开发者可能会集成第三方库,如AdBlocker或...
2. **图片预加载(Preloading)**:当用户需要查看原图时,可以先预加载图片,减少点击后等待的时间。预加载可以通过JavaScript的`Image`对象实现,创建一个新的`Image`实例并设置其`src`属性为原图URL,这样图片就...
8. **性能优化**:如缓存机制、内存管理、页面预加载等,这些都是提高浏览器性能的重要方面。 9. **用户交互**:如手势操作、下拉刷新、滑动切换页面等,这些都需要通过监听器和触摸事件来实现。 10. **安全考虑**...
预加载图片时,需要注意浏览器缓存的影响。某些浏览器可能会缓存图片,使得一旦加载过的图片再次请求时不会再发起新的HTTP请求,而是直接从缓存中取。因此,需要一种方法判断图片是否真的被加载到浏览器中。可以使用...
【标题】"VR探索之——aframe框架 在浏览器显示全景照片"揭示了如何利用Web技术展示虚拟现实(VR)内容,特别是通过aframe框架在浏览器上实现全景照片的展示。aframe是Mozilla开源的一个WebVR框架,它基于HTML,使得...