IE8 javscript上传文件出现 fakepath 的解决方法

来源:互联网 发布:八面玲珑 知乎 编辑:程序博客网 时间:2024/06/05 03:01

IE8的安全性有所改动,用JavaScript预览本地图片的功能失效了,真实的路径被C:/fakepath/取代了,原来是因为IE8增加了安全选项,默认情况下不显示上传文件的真实路径,进入internet选项,修改下设置即可显示真实的文件路径。

工具 -> Internet选项 -> 安全 -> 自定义级别 -> 将本地文件上载至服务器时包含本地目录路径,选中启用即可。ie8 fakepath

附带不用修改浏览器安全配置的javascript代码,兼容ie, firefox全系列

  1. function getPath(obj)
  2. {
  3.   if(obj)
  4.    {
  5.     if (window.navigator.userAgent.indexOf("MSIE")>=1)
  6.      {
  7.        obj.select();
  8.       return document.selection.createRange().text;
  9.      }
  10.     else if(window.navigator.userAgent.indexOf("Firefox")>=1)
  11.      {
  12.       if(obj.files)
  13.        {
  14.         return obj.files.item(0).getAsDataURL();
  15.        }
  16.       return obj.value;
  17.      }
  18.     return obj.value;
  19.    }
  20. }

参数obj为input file对象

 

 

document.selection 介绍

document.selection 表示当前网页中的选中内容。

方法有:

  • clear 清除选中的内容
  • empty 取消选中
  • createRange 返回 TextRange 或 ControlRange 对象
  • createRangeCollection 不支持

属性有:

 

  • type 选中内容的类型
  • typeDetail 不支持

 

二、document.selection.createRange()详细介绍

     document.selection.createRange() 根据当前文字选择返回 TextRange 对象,或根据控件选择返回ControlRange 对象。

配合 execCommand,在 HTML 编辑器中很有用,比如:文字加粗、斜体、复制、粘贴、创建超链接等。

 

例子:

Html代码 复制代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml" >  
  3. <head>  
  4.     <title>document.selectioncreateRange</title>  
  5. </head>  
  6. <body>  
  7.   
  8.   <div>请选中这里的部分文字。</div>  
  9.   <div><input type="button" value="加粗" onclick="javascript:Bold();" /></div>  
  10. <script type="text/javascript" language="javascript">  
  11. <!--   
  12. function Bold()   
  13. {   
  14.      var r = document.selection.createRange();   
  15.      r.execCommand("Bold");   
  16. }   
  17. -->  
  18. </script>  
  19.   
  20. </body>  
  21. </html>