本文介绍如何在图片上传前实现跨浏览器预览功能。针对Chrome、Firefox及IE10等现代浏览器,采用FileReader API读取文件;对于IE6至IE9,则利用AlphaImageLoader滤镜处理。代码包含HTML结构与JS逻辑,实测IE8+正常,但IE7因路径处理问题可能显示异常。
JS实现全浏览器兼容的图片上传前预览
网络上存在一份关于文件上传前预览功能的代码示例,该示例源自标题为“JavaScript 图片的上传前预览(兼容所有浏览器)”的文章。
完整HTML与JS代码示例
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<style type="text/css">
#preview,
.img,
img {
width: 200px;
height: 200px;
}
#preview {
border: 1px solid #000;
}
</style>
</head>
<body>
<div id="preview"></div>
<input type="file" onchange="preview(this)" />
<script type="text/javascript">
function preview(file) {
var prevDiv = document.getElementById('preview');
if (file.files && file.files[0]) {
var reader = new FileReader();
reader.onload = function(evt) {
prevDiv.innerHTML = '<img src="' + evt.target.result + '" />';
}
reader.readAsDataURL(file.files[0]);
} else {
prevDiv.innerHTML = '<div class="img" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src=\'' + file.value + '\'"></div>';
}
}
</script>
</body>
</html>
实现核心要点
实现核心要点
主要策略分为两类:针对Chrome、Firefox以及IE10等现代浏览器,使用FileReader对象来实现文件读取与预览;针对IE6至IE9版本,则通过应用filter:progid:DXImageTransform.Microsoft.AlphaImageLoader滤镜来完成。经测试,IE8及以上版本均能正常工作,但在IE7环境下,由于浏览器移除了file.value中的文件路径分隔符,导致预览无法显示。
以上内容为本文主要介绍的技术方案,旨在为开发者提供学习参考,并感谢对本站的支持。