Image():强制让图片缓存起来

Image 对象

Image 对象代表嵌入的图像。

  • <img> 标签每出现一次,一个 Image 对象就会被创建。
  • 创建一个Image对象:var a=new Image();    定义Image对象的src: a.src=”xxx.jpg”;    这样做就相当于给浏览器缓存了一张图片。

对于浏览器载入图像来说,只有在对图像发送一个 HTTP请求之后,它们才会被浏览器载入,对图像的 HTTP 请求要么使用 <img> 标记,要么通过方法调用实现。如果使用 JavaScript 脚本来处理在 mouseover 事件时交换图像,或者在一段时间之后自动更改图像,那么在从服务器获取图像时可能要等上几秒钟到几分钟的时间。如果使用一个慢速的 Internet 连接,或者要获取的图像非常大,或者其它一些情况,这种现象就特别明显;这样,延迟就造成你不能达到自己期望的效果。 预载入是在需要图像之前将其下载到缓存的一种方法。通过这一措施,当真正需要图像时,它就可以被立即从缓存中取出,从而能够立即显示。

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Image</title>
    <script language = "JavaScript"> 
        function preloader() 
        { 
            var heavyImage = new Image(); 
            heavyImage.src = "3.jpg"; 
        } 
    </script> 
</head>
<body onLoad="javascript:preloader()"> 
    <a href="#" onMouseOver="javascript:document.img2.src='3.jpg'"> 
        <img name="img2" src="2.jpg">
    </a> 
</body> 
</html>

请注意,图像标记本身不能处理 onMouseOver() 和 onMouseOut() 事件,这就是上例中<img> 标记被包含在一个<a> 标记之中的原因,<a> 标记支持这两个事件类型。 

如图,所需的图片都已经加载。

Image 对象的属性

属性描述
align 设置或返回与内联内容的对齐方式。
alt 设置或返回无法显示图像时的替代文本。
border 设置或返回图像周围的边框。
complete 返回浏览器是否已完成对图像的加载。
height 设置或返回图像的高度。
hspace 设置或返回图像左侧和右侧的空白。
id 设置或返回图像的 id。
isMap 返回图像是否是服务器端的图像映射。
longDesc 设置或返回指向包含图像描述的文档的 URL。
lowsrc 设置或返回指向图像的低分辨率版本的 URL。
name 设置或返回图像的名称。
src 设置或返回图像的 URL。
useMap 设置或返回客户端图像映射的 usemap 属性的值。
vspace 设置或返回图像的顶部和底部的空白。
width 设置或返回图像的宽度。

标准属性

属性描述
className 设置或返回元素的 class 属性。
title 设置或返回元素的 title。

Image 对象的事件句柄

事件句柄描述
onabort 当用户放弃图像的装载时调用的事件句柄。
onerror 在装载图像的过程中发生错误时调用的事件句柄。
onload 当图像装载完毕时调用的事件句柄。
function preloader() 
{ 
    var heavyImage = new Image(); 
    heavyImage.src = "3.jpg"; 
    heavyImage.onload=function(){alert(heavyImage.width)}; 
} 

在实际应用中,我们可能需要预载入多个图像,而不止一个。

function preloader() 
{ 
    // counter 
    var i = 0; 
    // create object 
    var arr = new Array(4)
    // set image list 
    var images = new Array(); 
    images[0]="1.jpg" ;
    images[1]="2.jpg" ;
    images[2]="3.jpg" ;
    images[3]="4.jpg" ;
    // start preloading 
    for(i=0; i<=3; i++) { 
        arr[i] = new Image();
        arr[i].src = images[i];
    } 
} 

 

posted @ 2017-04-19 16:49  chenxj  阅读(3288)  评论(0编辑  收藏  举报