input.outerHTML=input.outerHTML.replace(/(value=\").+\"/i,"$1\"");
http://www.jb51.net/article/24872.htm
在使用<input type='file' />控件的过程中,发现一个只有IE8下才存在的BUG,有时候取文件上传的路径(value),会由类似于D:\*.*变成C:\fakepath\*.*,即真实的路径被C:\fakepath\所取代了。
这个BUG在IE8下的出现情况目前基本上确定与代码的写法有关,但具体什么情况下会出现并不清楚,IE8下并不是所有的页面都会出现这个问题。
关于这个问题的由来,网上有很多文章和帖子都指向同一个地址:http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-March/019018.html,可惜这个文章是英文的,我的英文水平有限,只能用google翻译看个大概,问题可能与Web标准有关。
目前网上有两种解决方案:
第一种,是更改用户的IE8的浏览器设置
工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。
第二种,在IE中使用下面的脚本函数来替换直接取控件value的操作(FireFox中使用obj.files.item(0).getAsDataURL())
function getValue(obj) {
obj.select(); //该对象选取
return document.selection.createRange().text; //返回选取项的文本内容
}
显然,对于Web开发来说,最好是不出现该Bug,如果经过测试,IE8下某个页面中的input file控件不存在该Bug,则可以不必考虑该问题。
如果存在该Bug,而且无法找到原因时,第二种解决方案是比较好的选择
第一种解决方案并不可行,不可能要求所有的用户为了访问我们的网站更改IE设置。
分享到:
相关推荐
自己总结的file上传数据的一些小经验,给大家分享下,希望对大家有帮助
补充知识:将input file的选择的文件清空的两种解决方案 上传文件时,选择了文件后想清空文件路径,搜索了一下,用两种方法解决 第一种 var obj = document.getElementById(‘fileupload') ; obj.select(); document...
把input file類型的value清空–Test by 编程浪子 清除大法1:李代桃僵 清除大法2:暗渡陈仓 清除大法3:声东击西 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 一打开就给FILE域默认值的方法 ...
上传文件时,选择了文件后想清空文件路径,经搜索发现个不错的方法在此与大家分享下,感兴趣的朋友不要错过
最近做的一个小功能,需要清空<input type="file">的值,但上传控件<input type="file">的值不能通过JavaScript来修改。
有这么一种情况,就是中文字符占两个字符长度或者更多,而javascript的length属性是按一位计算的,需要自己写函数
代码如下: var obj=网页中的<input type=”file” /> obj.outerHTML = obj.outerHTML.replace(/(value=\”).+\”/i, “$1\””);
input type=”file”/>)用于在客户端浏览并上传文件,用户选取的路径可以由value属性获取,但value属性是只读的,不能通过 javascript来赋值,这就使得不能通过value=””语句来清空它。很容易理解为什么只读,...
在清空input file标签选中值时,分别用了以下方法,发现有的对有的错: 【√】$(“#file”)[0].value = “”; 【√】$(“#file”)[0].value = null; 【×】$(“#file”).attr(“value”,””); 【×】$(“#file”)....
直接reset form或者是触发type为reset的button的click事件就OK了,但是IE却奇葩了,IE中的File域无法清空,可能你看到的是已经没有值了,但是你可以打印出来看看就知道了: 代码如下: var fileVal = $(‘input[type=...
般来说,在对一个文件域(input type=”file”)使用了验证后,我们总会希望把文件域中的值给清空了(否则错误的文件仍然会被提交),而在IE中,安全设置的原因,是不允许更改文件域的值的(也就是不能使用val(“”))...
使用脚本把这个file的input移动到一个form中,然后调用reset,如果有多个这样的input当然还要再移出来.这个方法我不会采用,因为对.net开发者 来讲习惯了一个页面就一个form所有控件都在其中. 方法2).这个方法有点投机,...
本篇文章主要是对js获取、清空input type="file"的值的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
本篇文章主要介绍了js清除input中type等于file的值域(示例代码) 需要的朋友可以过来参考下,希望对大家有所帮助
问题描述 在最近的项目开发中遇到了这样的一个问题,当我上传了一个文件时,我将获取到的文件名清空后,...input type=file style=display:none @change=getFile id=input-file> 上传的文件名:{{fileName}}</p>
google找到这样一个解决方法: 在上传控件中插入了值,就只能通过form的reset功能来清空了,但是form里面其他的值也被reset了。 既然可以使用form的reset清空,那就有办法了:新建一个临时form,然后将需要清空的...