`

input file的使用方法(清空等)

 
阅读更多

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设置。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics