今天发现,在IE9 下,彩信页面的图片预览无法正常显示,经查证,原因在于IE9下无法获取file控件的文件路径。
代码如下:
var imageUrl = "";
var objTmp = getObj('picfile');
if (window.navigator.userAgent.indexOf("MSIE")>=1){
objTmp.select();
imageUrl = document.selection.createRange().text
}
以上代码在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中测试,一切正常。
IE9的处理代码如下:
var imageUrl = "";
var objTmp = getObj('picfile');
var version = window.navigator.userAgent;
if(version.substr(version.indexOf("MSIE") + 5, 1) >= 9){
imageUrl = objTmp.value;
objTmp.select();
getObj('picDiv').focus();
imageUrl = document.selection.createRange().text;
}
//在页面中添加
<div id="picDiv" style="width: 1px; height: 1px;"></div>
分享到:
相关推荐
在进行Web开发时,我们经常会遇到需要通过file控件让用户选择本地文件的场景。然而,出于安全和隐私考虑,浏览器限制了我们通过JavaScript直接访问用户选定的文件的完整路径。这主要是为了防止恶意脚本读取用户的...
在 IE9 下,如果 file 控件获得焦点,则 document.selection.createRange() 将拒绝访问。这是因为 IE 浏览器的安全机制所致。因此,只需要在 file.select() 后面加一句 file.blur() 即可。 解决方法 然而,这样做...
虽然给定的部分内容代码未能完整展示,但从已有的代码片段中可以看出,作者试图通过检测浏览器类型(IE或Firefox),并根据不同类型的浏览器采用不同的方法来获取本地文件的路径。这种方法的核心在于使用浏览器特有...
在网页开发中,`<input type="file">` 是一个常见的文件上传控件,它允许用户选择本地的文件,如图片。然而,由于安全原因,现代浏览器并不直接提供所选文件的完整路径,而是返回一个相对安全的文件名或者一个沙箱内...
"WebDirSelector获取本地路径"这个标题所涉及的知识点,就是关于如何在Web环境中获取用户的本地文件系统路径。这个过程通常涉及到浏览器安全策略、JavaScript API以及可能的服务器端处理。 首先,我们要理解浏览器...
在网页开发中,File控件(`<input type="file">`)经常用于用户选择本地文件上传至服务器。然而,由于安全原因,浏览器通常不允许JavaScript直接修改File控件的value属性,以防止恶意脚本篡改用户选定的文件。本文将...
5. **使用Flash或ActiveX控件**:如果必须在IE8上获取真实路径,可以考虑使用Flash或ActiveX插件,但这会增加兼容性问题和安全风险。 压缩包中的`fileupload.jsp`文件可能是一个示例或模板,用于演示如何在Java...
标题中的“整理 IE 7、8 预览本地图片和获取本地图片大小”涉及到的是在Internet Explorer 7和8这两个较旧版本的浏览器中,如何处理本地图片的预览和获取图片尺寸的问题。在早期的Web开发中,由于浏览器兼容性问题,...
在IE中,通过JavaScript可以获取用户选择的文件信息,但出于安全考虑,浏览器不会提供文件的完整路径,只能获取文件名。例如,通过`event.target.files[0].name`可以获取选中文件的名称。如果需要将文件上传至服务器...
需要注意的是,由于安全和隐私原因,IE和现代浏览器都对本地文件系统有严格的限制,通常不允许直接访问文件路径。因此,我们只能获取到文件的二进制数据或数据URL,而不是实际的文件路径。 此外,IE6和7并不支持CSS...
### JavaScript 读写本地文件详解 #### 一、概述 在Web开发中,JavaScript作为一种广泛使用的客户端脚本语言,主要用于实现网页的动态效果与交互功能。然而,由于浏览器的安全限制,默认情况下JavaScript是无法...
在某些早期版本的IE浏览器中,可以设置`img`元素的`dynsrc`属性来预加载文件,然后通过`fileSize`属性获取文件大小。然而,这种方法并不普遍适用,因为它在IE7、IE8、Firefox以及Chrome等现代浏览器中可能无法正常...
在网页开发中,文件上传功能是不可或缺的一部分,而PlupLoad是一款高效、强大的文件上传控件,它提供了丰富的API和多种皮肤,支持多浏览器,包括IE6在内的老旧浏览器,使得文件上传体验更加友好。本文将深入探讨...
本文将深入探讨如何在IE6、IE7以及Firefox等浏览器中获取文件输入控件的全路径,并提供一个具体的解决方案。 在早期的Internet Explorer(如IE6)中,用户可以通过`<input type="file">`选择文件后,直接通过该元素...
在JavaScript中,获取IE浏览器(特别是版本7和8)上传文件的完整路径是一个相对复杂的过程,因为出于安全考虑,现代浏览器不再返回文件的实际路径。在IE7和IE8中,可以通过选择文件后利用`document.selection....
在这个JavaScript代码中,我们为file input添加了事件监听,当用户选择文件之后,会触发事件处理函数,该函数会将文件路径设置到文本框中。如果浏览器不支持addEventListener或attachEvent方法,我们使用传统的...
2. **指定调试程序**:在“可执行文件用于调试会话”字段中填写IE的路径。 3. **设置启动参数**:在“程序参数”字段中输入包含调试页面地址的参数,例如`-url file:///D:\debug.htm`。 这样,每次启动调试时,IE...
所以,"JS读取本地XML(支持IE和火狐)"的实现是基于用户交互,而非直接访问本地文件路径。 综上所述,实现JS在IE和火狐中读取本地XML的关键在于使用FileReader API读取文件内容,然后使用XMLHttpRequest或...