记一次IE浏览器做图片预览的坑
随便写写吧,被坑死了
IE 10 及 IE10以上,可以使用FileReader的方式,来做图片预览,加载本地图片显示
IE 9 8 7 没有FileReader这个对象,所以只能使用微软自己的东西来做,具体就是,使用CSS Filter,滤镜来做显示
坑来了,就在这里,IE浏览器会默认将上传的文件名,做了个隐藏,不显示文件在本机的实际路径,而是搞了个什么fakepath来遮掩具体路径
这就导致一个很直接的问题,获取不到真实的文件路径,就没法读取文件,自然无法做显示了。
可以通过开启上传文件显示具体文件路径的方式,但是,这就没有用户体验了。。。。。
网上找了一圈子,看到有些博客中出现了 FileObject.select() 以及 document.selection.createRange().text 说实话,没见过,不知道什么用,所以开始时也没去尝试使用,
后来又找了些文章,决定试一下,额 发现可以了,具体来来说,使用对象的select方法指定元素被选中,然后去读取这个元素的值,这个值不一定是value,而是具体元素的内容,比如
file控件中,显示的具体的文件路径,通过获取它的TextRange对象,就能读取具体的值,这种绕过直接获取file控件的value(在IE下被转换了),来获取具体文件路径。
目前使用最新IE浏览器 仿真模式 IE 7 8 9 直接使用上面的方式,会有问题,显示拒绝访问,为了安全性的问题。所以将焦点转到页面上一个无关的div或者button上,感觉最好是button按钮比较好。 这样就能成功获取了
贴几个讲解比较全面的博文,也谢谢这些博主!
http://gallop-liu.iteye.com/blog/1344778
http://www.cnblogs.com/slyzly/articles/2411940.html
记一次IE浏览器做图片预览的坑的更多相关文章
- 适用于各浏览器支持图片预览,无刷新异步上传js插件
文件上传无疑是web应用中一个非常常用的功能,不管是PHP.jsp还是aspx.mvc等都会需要文件上传,但是众所周知当使用自带的文件上传功能时总会出现页面刷新的情况.当然现在有了html5这个好东西 ...
- HTML5浏览器端图片预览&生成Base64
本文主要介绍如何通过拖拽方式在浏览器端实现图片预览,并生成图片的Base64编码. 工具链接:图片转Base64. 首先介绍一下FileReader, FileReader对象允许浏览器使用File或 ...
- js本地图片预览代码兼容所有浏览器
html代码 <div id="divPreview" style="width: 160px; height: 170px"><img id ...
- 兼容ie[6-9]、火狐、Chrome、opera、maxthon3、360浏览器的js本地图片预览
html代码: <div id="divPreview"> <img id="imgHeadPhoto" src="Images/H ...
- 通过file文件选择图片预览功能
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JavaScript图片上传前的图片预览功能
JS代码: //js本地图片预览,兼容ie[6-9].火狐.Chrome17+.Opera11+.Maxthon3 function PreviewImage(fileObj, imgPreviewI ...
- js本地图片预览,兼容ie[6-9]、火狐、Chrome17+、Opera11+、Maxthon3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【javascrpt】——图片预览和上传,兼容IE 9-
下载DEMO:https://github.com/CaptainLiao/zujian/tree/master/Upload 对于现代浏览器来说,要实现图片预览非常简单: 1.fileReader. ...
- html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器
以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一般的上传没有问题,不过如果是上传图片,且需要预览的话,就力有不逮了,趁着闲暇时间,给上 ...
随机推荐
- 为什么说ArrayList是线程不安全的?
一.概述 对于ArrayList,相信大家并不陌生.这个类是我们平时接触得最多的一个列表集合类. 面试时相信面试官首先就会问到关于它的知识.一个经常被问到的问题就是:ArrayList是否是线程安全的 ...
- 测试必备之Java知识(三)—— 集合、Map相关
集合相关 List.Set.Map的区别 类型 描述 List 允许重复对象,可插入多个null元素,有序 Set 不允许重复对象,只允许一个null元素,无序 Map 不是collection的子接 ...
- Nginx作为负载均衡服务器——server参数讲解
upstream举例 upstream backend { server backend1.ecample.com weight = 5; # wwight 代表权重 server backend2. ...
- Linux.vim编辑器显示行号
显示行号 :set number 取消显示行号:set nonumber
- 安装Jupyter Notebook
1.安装Ipython pip3 install -i https://pypi.douban.com/simple ipython 2.安装jupyter pip3 install -i https ...
- java"小心机"(1)【资源彩蛋!】
每天进步一点点,距离大腿又近一步! 阅读本文大概需要9分钟 java"小心机"系列文章在此开篇.在这,将会给你带来曾经错过.忽略或感到模糊的知识,也许它很基础,微不足道,但它能修复 ...
- 大叔 Frameworks.Entity.Core 2 PageList
Frameworks.Entity.Core\Commons\PageList\ 1 分页通用类 ListPageList<T> 继承 PageListBase<T>, IP ...
- 前端 network
控制台 :https://blog.csdn.net/m0_37724356/article/details/79884006 原文链接:https://segmentfault.com/a/1190 ...
- codeforces 1278F - Cards(第二类斯特林数+二项式)
传送门 解题过程: \(答案=\sum^n_{i=0}*C^i_n*{\frac{1}{m}}^i*{\frac{m-1}{m}}^{n-i}*i^k\) 根据第二类斯特林数的性质\(n^k=\sum ...
- 压力测试---Jemeter的使用
一.线程组配置 线程组相当于有多个用户,同时去执行相同的一批次任务.每个线程之间都是隔离的,互不影响的.一个线程的执行过程中,操作的变量,不会影响其他线程的变量值. Delay Thread crea ...