记一次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+及其它标准浏览器,对付一般的上传没有问题,不过如果是上传图片,且需要预览的话,就力有不逮了,趁着闲暇时间,给上 ...
随机推荐
- WiFi模块Demo(新手教程)图文详解模块使用教程
本文出自APICloud官方论坛,感谢论坛版主 Mr.ZhouHeng 的分享. 第一步我们需要在开发控制台创建一个Native App应用以及添模块的准备工作: 按照下图步骤 输入完点创建完成之后 ...
- dp-最长回文串
博客 : http://blog.csdn.net/hao_zong_yin/article/details/72730732 问题描述: 求一个序列中的最长回文串,这个串可以不连续 , 如 { 1 ...
- JVM中的GC算法,JVM参数,垃圾收集器分类
一.在JVM中什么是垃圾?如何判断一个对象是否可被回收?哪些对象可以作为GC Roots的根 垃圾就是在内存中已经不再被使用到的空间就是垃圾. 1.引用计数法: 内部使用一个计数器,当有对象被引用+1 ...
- MyBatis4——一对一、一对多关联查询
关联查询: 一对一: 1.业务扩展类 核心:用resultType指定的类的属性包含多表查询的所有字段. 2.resultMap 通过添加属性成员建立两个类之间的连接 <!--利 ...
- RocketMQ 解决 No route info of this topic 异常步骤
原文地址:https://blog.csdn.net/chenaima1314/article/details/79403113 rocketmq运行时提示 No route info of this ...
- 共享excel工作簿
- java异步调用方法
一.利用多线程 直接new线程 Thread t = new Thread(){ @Override public void run() { longTimeMethod(); } }; 使用线程池 ...
- Kafka -入门学习
kafka 1. 介绍 官网 http://kafka.apache.org/ 介绍 http://kafka.apache.org/intro 2. 快速开始 1. 安装 路径: http://ka ...
- jenkins 与 gitlab 的持续集成
前言介绍 gitlab与jenkins的安装部署请参考之前的文章:这里介绍一下jenkins与gitlab结合的好处. gitlab可以自己实现CICD功能,jenkins也可以结合其他工具来实现CI ...
- java 编程小知识点
--------------------------------- 时间不多了,抓紧做自己喜欢的事情 1. 使用位运算 & 来判断一个数是否是奇数.偶数的速度很快 (a & 1 ) = ...