LeassTaTT 的答案在 FF 和 Chrome 等“标准”浏览器中运行良好。
IE 的解决方案存在但看起来不同。这里对跨浏览器解决方案的描述:
在 HTML 中,我们需要两个预览元素,img 用于标准浏览器,div 用于 IE
HTML:
<img id="preview"
src=""
alt=""
style="display:none; max-width: 160px; max-height: 120px; border: none;"/>
<div id="preview_ie"></div>
在 CSS 中,我们指定以下 IE 特定的东西:
CSS:
#preview_ie {
FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)
}
在 HTML 中,我们包含标准和 IE 特定的 Javascript:
<script type="text/javascript">
{% include "pic_preview.js" %}
</script>
<!--[if gte IE 7]>
<script type="text/javascript">
{% include "pic_preview_ie.js" %}
</script>
pic_preview.js 是来自 LeassTaTT 答案的 Javascript。将$('#blah') 替换为$('#preview') 并添加$('#preview').show()
现在是 IE 特定的 Javascript (pic_preview_ie.js):
function readURL (imgFile) {
var newPreview = document.getElementById('preview_ie');
newPreview.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgFile.value;
newPreview.style.width = '160px';
newPreview.style.height = '120px';
}
就是这样。适用于 IE7、IE8、FF 和 Chrome。请在IE9中测试并报告。
IE预览的思路是在这里找到的:
http://forums.asp.net/t/1320559.aspx
http://msdn.microsoft.com/en-us/library/ms532969(v=vs.85).aspx