上传图片前预览 解决在IE7下onpropertychange不起作用的问题

来源:互联网 发布:数控相贯线切割机编程 编辑:程序博客网 时间:2024/06/05 08:08

上传图片前预览

上传预览我们可以这么写
<script   language="javascript">   
  function   test()
{   
  document.all.showimg.src
=document.all.file1.value;   
    
  }
   
  
</script>    
  
<img id="showimg">
    
  
<input   type="file"   id="file1"   onchange="test()">
保存为html文件,运行,一切正常。
当我们把上面的代码原封不动的拷贝到aspx文件中,运行毫无反应,
原因在于 对安全的考虑限制image对本地文件的访问(即使你在
aspx应用程序中用一个html页面替换aspx页面也无济于事.)
google一下能用滤镜的方式解决此问题.
在要显示图片的地方加上这段:
<div id="divShow" style="FILTER:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);WIDTH:274px;HEIGHT:100px">
sizingMethod:有三个选项
crop:剪切图片以适应对象尺寸。
image:默认值。增大或减小对象的尺寸边界以适应图片的尺寸。
scale:缩放图片以适应对象的尺寸边界
其中有一个src属性是指向图片路径的(必选的);
可以试一下
<script language="javascript">
function ShowImage(path)
{
  document.all.divShow.filters.item(
"DXImageTransform.Microsoft.AlphaImageLoader").src = path;
}

</script>
<body MS_POSITIONING="GridLayout">
        
<form id="Form1" method="post" runat="server">
            
<INPUT style="Z-INDEX: 101; LEFT: 232px; POSITION: absolute; TOP: 272px" type="file" onchange="ShowImage(this.value)">
            
<div id="divShow" style="FILTER:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);WIDTH:274px;HEIGHT:100px">
        
</form>
    
</body>
浏览图片没问题,可是浏览小图Div会小,浏览大图可能会占据整个页面,我们希望以固定的大小显示所有的图片
可以使用他的scale属性.可是这个属性有个问题,浏览大图时,他会缩小原图,浏览小图时就惨了,他会放大小图,
使小图模糊不清。
我们添加个方法改变这种情况。
function setImg(o)
{
var width_img;
var height_img;

o.style.visibility 
= "visible";
width_img
=o.offsetWidth;
height_img
=o.offsetHeight;

var width
=274;   //预定义宽
var height=100;  //预定义高


var ratW;        
//宽的缩小比例
var ratH;        //高的缩小比例
var rat;         //实际使用的缩小比例
if(width_img<width && height_img<height)
{
    
//如果比预定义的宽高小,原图显示。
    o.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "image";
    
return;

    
}
else{
    
//如果大的化,要把 sizingMethod改成scale 如果属性是image,不管怎么改div的宽高,都不起作用
    o.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "scale";

}

ratH
=height/height_img;
ratW
=width/width_img;
if(ratH<ratW)       //选择最小的作为实际的缩小比例
    rat=ratH;
else
    rat
=ratW;
    
width_img
=width_img * rat;
height_img
=height_img * rat;
o.style.width
=width_img;
o.style.height
=height_img;
}
修改ShowImage方法
function ShowImage(path){
 
//处理前是原图,先将其隐藏,
 document.all.divShow.style.visibility = "hidden";
document.all.divShow.filters.item(
"DXImageTransform.Microsoft.AlphaImageLoader").src = path;
  document.all.divShow.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "image";
//过一小会获取div的宽高.
setTimeout("setImg(document.all.divShow)",100);
}


以上在IE7中测试通过.
转自http://www.cnblogs.com/BZZ/archive/2008/07/08/1053073.html
存在另外问题
不能使用img作为图片容器,所以就造成不能使用onerror属性,当图片没有加载时显示预先设定的图片,或是设置页面加载后的初始图片

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 红米手机打不开怎么办 台式电脑网页打不开怎么办 电脑网页很多都打不开怎么办 qq发送不了位置怎么办 qq无法找到入口怎么办 玩游戏总是掉怎么办 ipad所有按键失灵怎么办 手机启动器停止运行怎么办 安卓版泰拉瑞亚联机失去连接怎么办 吃鸡安装不了怎么办 obb文件丢失了怎么办 dnf登录闪退怎么办 泰拉瑞亚地图找不到备份怎么办 服务器没远程管理卡怎么办 tplink上不了网怎么办 键盘端口坏了怎么办 小米路由dns错误怎么办 电脑内存性能低怎么办 nas硬盘坏了怎么办 360安装环境异常怎么办 连接不上服务器怎么办 路由器被绑定mac怎么办 mac地址绑定失败怎么办 触摸屏忘了密码怎么办? 小区高层水压低怎么办 高层楼房水压不够怎么办 热水器温度太高怎么办 热水器出热水小怎么办 天然气热水器水压不够怎么办 热水器水变小了怎么办 液压齿轮泵没力怎么办 gps总是浮点解怎么办 电源要做到稳压怎么办 变压器输出电压低怎么办 变压器输出电压高怎么办 家里空调带不动怎么办 小天才定位不准怎么办 伐木锯链条不出油怎么办 角磨机切割片卸不下来怎么办 油泵电机声音大怎么办 汽车油泵声音大怎么办