[转]很简单的JS实现上传前预览图片(兼容IE8)

关于图片预览的一个小方法,很简单,我在网上看到的,下面是源码:

 1 <html xmlns="http://www.w3.org/1999/xhtml">
 2 <head>
 3 <script type="text/javascript" language="javascript">
 4 
 5     function PreviewImg(imgFile) {
 6 
 7         var imgDiv = document.getElementById("gggg");
 8 
 9         imgDiv.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = scale)";
10         imgDiv.filters("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value;
11     } 
12 </script>
13 </head>
14 <body>
15     <form id="form1" runat="server">
16     <div>
17         <asp:FileUpload ID="fp" onchange="javascript:PreviewImg(this);" runat="server" />
18     </div>
19        <div id="gggg" style="width: 300px; height: 300px">
20     </div>       
21     </form>
22 </body>
23 </html>

 

起初是看了这个:

将如下代码放入<head></head>中:

 1 <script type="text/javascript" language="javascript"> 
 2 <!-- 
 3 function PreviewImg(imgFile){ 
 4    
 5      var newPreview = document.getElementById("newPreview");     
 6      var imgDiv = document.createElement("div"); 
 7      document.body.appendChild(imgDiv); 
 8      imgDiv.style.width = "118px";     imgDiv.style.height = "127px"; 
 9      imgDiv.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = scale)";    
10      imgDiv.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value; 
11      newPreview.appendChild(imgDiv);     
12      var showPicUrl = document.getElementById("showPicUrl"); 
13      showPicUrl.innerText=imgFile.value; 
14      newPreview.style.width = "80px"; 
15      newPreview.style.height = "60px"; 
16 } 
17 --> 
18 </script> 

在页面中加入如下代码:

1          <div id="newPreview"></div> 
2          <div id="showPicUrl"></div> 
3          <hr /> 
4          <p> 
5              选择图片:<input type="file" size="20" onchange="javascript:PreviewImg(this);" /> 
6          </p>

后来发现这样不能实现只预览一张!!它是预览一张就添加一张!而我要的是只预览一张!经过网上在搜索看到了关于这个方法的说明!!便得到了我的方法!!

 

以下便是这个方法的说明:

在 IE6 中,可以很方便地利用 img 的 src 属性,实现本地图片预览,然而在 IE7 中,这种办法却行不通。需要用 AlphaImageLoader 。

说明:

在对象容器边界内,在对象的背景和内容之间显示一张图片。并提供对此图片的剪切和改变尺寸的操作。如果载入的是PNG(Portable Network Graphics)格式,则0%-100%的透明度也被提供。

语法:

filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )

enabled: 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。
true:默认值。滤镜激活。
false:滤镜被禁止。

sizingMethod: 可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。
crop:剪切图片以适应对象尺寸。
image:默认值。增大或减小对象的尺寸边界以适应图片的尺寸。
scale:缩放图片以适应对象的尺寸边界。

src: 必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。

 

 来源:http://hi.baidu.com/pukuimin1226/item/ddf147972c6d9cdc1a49dfe9

posted @ 2012-11-16 16:48  Seasons1987  阅读(16083)  评论(1编辑  收藏  举报