IE9获取file控件的文件路径

最近发现,在IE9下,公司网站的本地图片预览都无法正常显示,经过测试发现,原因在于IE9下无法获取file控件的文件路径。

以前的代码如下:

var strPic = fileImg.value;

if ($.ie && $.browser.version > 6) {
    fileImg.select();
    strPic = document.selection.createRange().text;
    document.selection.empty();

}

如果strPic不为空,则使用滤镜预览。

以上代码在IE 6 7 8均正常使用,在IE9下,document.selection.createRange()拒绝访问,看来安全性有所提高。

最后测试发现,在IE9下,如果file控件获得焦点,则document.selection.createRange()拒绝访问,

因此,只需要在fileImg.select()后面加一句fileImg.blur()即可。

但是,如果当前页面被嵌在框架中,则fileImg.blur()之后,file控件中原本被选中的文本将会失去选中的状态,因此,不能使用fileImg.blur()。

可以让当前页面上的其他元素,如div,button等获得焦点即可,如div_view.focus()。

注意,如果是div,则要确保div有至少1像素的高和宽,方可获得焦点。

目前在IE9中测试,一切正常。

 

2011-06-17

fidy

 

IE9下,使用div滤镜显示图片,如果给src赋的值与上一次的值相同,则图片不更新。

你可能感兴趣的:(框架,IE,测试,File,div,button)