兼容IE和FF的图片上传前预览js代码


Posted in Javascript onMay 28, 2013

效果图如下:
兼容IE和FF的图片上传前预览js代码 
代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>本地图片预览</title> 
<style type="text/css"> 
#preview{width:100px;height:100px;border:1px solid #000;overflow:hidden;} 
#imghead {filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);} 
</style> 
<script type="text/javascript"> 
function previewImage(file) 
{ 
var MAXWIDTH = 100; 
var MAXHEIGHT = 100; 
var div = document.getElementById('preview'); 
if (file.files && file.files[0]) 
{ 
div.innerHTML = '<img id=imghead>'; 
var img = document.getElementById('imghead'); 
img.onload = function(){ 
var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight); 
img.width = rect.width; 
img.height = rect.height; 
img.style.marginLeft = rect.left+'px'; 
img.style.marginTop = rect.top+'px'; 
} 
var reader = new FileReader(); 
reader.onload = function(evt){img.src = evt.target.result;} 
reader.readAsDataURL(file.files[0]); 
} 
else 
{ 
var sFilter='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="'; 
file.select(); 
var src = document.selection.createRange().text; 
div.innerHTML = '<img id=imghead>'; 
var img = document.getElementById('imghead'); 
img.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = src; 
var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight); 
status =('rect:'+rect.top+','+rect.left+','+rect.width+','+rect.height); 
div.innerHTML = "<div id=divhead style='width:"+rect.width+"px;height:"+rect.height+"px;margin-top:"+rect.top+"px;margin-left:"+rect.left+"px;"+sFilter+src+"\"'></div>"; 
} 
} 
function clacImgZoomParam( maxWidth, maxHeight, width, height ){ 
var param = {top:0, left:0, width:width, height:height}; 
if( width>maxWidth || height>maxHeight ) 
{ 
rateWidth = width / maxWidth; 
rateHeight = height / maxHeight; if( rateWidth > rateHeight ) 
{ 
param.width = maxWidth; 
param.height = Math.round(height / rateWidth); 
}else 
{ 
param.width = Math.round(width / rateHeight); 
param.height = maxHeight; 
} 
} 
param.left = Math.round((maxWidth - param.width) / 2); 
param.top = Math.round((maxHeight - param.height) / 2); 
return param; 
} 
</script> 
</head> 
<body> 
<div id="preview"> 
<img id="imghead" width=100 height=100 border=0 src='../images/head01_big.jpg'> 
</div> 
<br/> 
<input type="file" onchange="previewImage(this)" /> 
</body> 
</html>
Javascript 相关文章推荐
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
Mar 20 Javascript
web页面数据展示新想法(json)
Jun 08 Javascript
JS实现下拉框的动态添加(附效果)
Apr 03 Javascript
JS获得URL超链接的参数值实例代码
Jun 21 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
js验证电话号码与手机支持+86的正则表达式
Jan 23 Javascript
分享javascript、jquery实用代码段
Oct 20 Javascript
深入解析Vue 组件命名那些事
Jul 18 Javascript
JS+canvas动态绘制饼图的方法示例
Sep 12 Javascript
node中的密码安全(加密)
Sep 17 Javascript
VUE组件中的 Drawer 抽屉实现代码
Aug 06 Javascript
vue全局使用axios的操作
Sep 08 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
May 28 #Javascript
jQuery实现可拖动的浮动层完整代码
May 27 #Javascript
Jquery实现视频播放页面的关灯开灯效果
May 27 #Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
May 27 #Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
May 27 #Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
May 27 #Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
May 27 #Javascript
You might like
Zend公司全球首推PHP认证
2006/10/09 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
jQuery 学习第七课 扩展jQuery的功能 插件开发
2010/05/17 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
mpvue小程序循环动画开启暂停的实现方法
2019/05/15 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
Jquery Datatables的使用详解
2020/01/30 jQuery
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
Python3.2中的字符串函数学习总结
2015/04/23 Python
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
python中partial()基础用法说明
2018/12/30 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
中考冲刺决心书
2014/03/11 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang