随便写写吧,被坑死了


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浏览器做图片预览的坑的更多相关文章

  1. 适用于各浏览器支持图片预览,无刷新异步上传js插件

    文件上传无疑是web应用中一个非常常用的功能,不管是PHP.jsp还是aspx.mvc等都会需要文件上传,但是众所周知当使用自带的文件上传功能时总会出现页面刷新的情况.当然现在有了html5这个好东西 ...

  2. HTML5浏览器端图片预览&生成Base64

    本文主要介绍如何通过拖拽方式在浏览器端实现图片预览,并生成图片的Base64编码. 工具链接:图片转Base64. 首先介绍一下FileReader, FileReader对象允许浏览器使用File或 ...

  3. js本地图片预览代码兼容所有浏览器

    html代码 <div id="divPreview" style="width: 160px; height: 170px"><img id ...

  4. 兼容ie[6-9]、火狐、Chrome、opera、maxthon3、360浏览器的js本地图片预览

    html代码: <div id="divPreview"> <img id="imgHeadPhoto" src="Images/H ...

  5. 通过file文件选择图片预览功能

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. JavaScript图片上传前的图片预览功能

    JS代码: //js本地图片预览,兼容ie[6-9].火狐.Chrome17+.Opera11+.Maxthon3 function PreviewImage(fileObj, imgPreviewI ...

  7. js本地图片预览,兼容ie[6-9]、火狐、Chrome17+、Opera11+、Maxthon3

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 【javascrpt】——图片预览和上传,兼容IE 9-

    下载DEMO:https://github.com/CaptainLiao/zujian/tree/master/Upload 对于现代浏览器来说,要实现图片预览非常简单: 1.fileReader. ...

  9. html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

    以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一般的上传没有问题,不过如果是上传图片,且需要预览的话,就力有不逮了,趁着闲暇时间,给上 ...

随机推荐

  1. Scala与Mongodb实践3-----运算环境的搭建

    目的:使的在IDEA中编辑代码,令代码实现mongodb运算,且转换较为便捷 由实验2可知,运算环境的搭建亦需要对数据进行存储和计算,故需要实现类型转换,所以在实验2的基础上搭建环境. 由菜鸟教程可得 ...

  2. [C++]最小生成树

    1. 最小生成树定义 树是指没有环路的图,生成树就是指一个图上面删除一些边,使它没有环路. 最小生成树就是指生成树中边权之和最小的那一种. 上图的最小生成树就是这样: 2. Prim 算法 2.1. ...

  3. 倍增LCA模板2董博文版 伪代码

    Dfs(int rt){ f[][rt]; ;k<=;k++) f[k][rt]=f[k-][f[k-][rt]]; } int LCA(int x,int y){ if(Dp[x]<Dp ...

  4. Java架构师中的内存溢出和内存泄露是什么?实际操作案例!

    JAVA中的内存溢出和内存泄露分别是什么,有什么联系和区别,让我们来看一看. 01 内存泄漏 & 内存溢出 1.内存泄漏(memory leak ) 申请了内存用完了不释放,比如一共有 102 ...

  5. Java.前端模板.Thymleaf

    1. Input 日期格式化 <input id="renewalDate" name="renewalDate" th:value="${#d ...

  6. python 进程事件

    1.作用 通过信号量,控制全部进程进入阻塞状态,也可以通过控制信号量,解除全部进程的阻塞 注意:定义的事件对象,默认状态是阻塞 2.常用方法 """ 对象.set() 作 ...

  7. 【java基础】String、StringBuilder和StringBuffer的区别

    关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下 1.三者在执行速度方面的比较:StringBuilder >  String ...

  8. 嗯 想写个demo 苦于没数据

    step 1: 来点数据: 各种数据 随你便了. step 2: 来个 服务端 step 3 : 客户端 调用

  9. Day8-Python3基础-Socket网络编程

    目录: 1.Socket语法及相关 2.SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道 ...

  10. 关于基本布局之——Grid布局

    Gird布局 一.关于概念 网格布局(Grid)是一个很强大的 CSS 布局方案.它可以将网页划分为多个网格任意拼接的布局,可以灵活的运用并实现出多种布局形式. (grid和inline-grid区别 ...