javascript - 尝试打开本地文件时,IE 8.0 访问被拒绝

标签 javascript windows security internet-explorer

此脚本适用于 IE 6,但不适用于 IE 8.0 我的用户现在收到“访问被拒绝错误”。我建议我的用户启用哪些设置 本地文件访问以便此脚本可以工作?

<script language="JavaScript">
function viewFile(selectedItem) {
 for (i=0; i<selectedItem.options.length; i++) {
  if ((selectedItem.options[i] != null) && (selectedItem.options[i].selected == true)) {
   window.open("file://"+selectedItem.options[i].text);
  }
 }
}
</script>

用户可以从本地驱动器中选择多个文件。该列表存储在文本框中,然后单击列表中的一个选定文件。

示例:

selectedItem.options[i].text = C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Sunset.jpg

最佳答案

您将无法再“开箱即用”地执行此操作,因为 IE8 的安全模型比 IE6 严格得多。

您的选择有限,但可以包括:

  1. 开发闪存组件来访问用户的本地驱动器。

  2. 将站点实现为 HTA(html 应用程序),以提供对用户文件系统的升级访问。

  3. 让访问者通过将您的网站添加到受信任域列表来自定义他们的 IE 安全设​​置,然后向受信任域授予对 file:///协议(protocol)的访问权限(我不确定哪种安全设置适用于此)特定功能,或者是否有可用的功能。)

  4. 开发插件或bho对象(类似于flash组件,但用C++或C#编写)

  5. 创建 IE 上下文菜单 - http://msdn.microsoft.com/en-us/library/bb735853(v=vs.85).aspx这也将具有更高的特权。

作为旁注,c:\路径的正确文件方案应如下所示:

文件:///c:/documents%20and%20settings/file.jpg

注意 file: 之后的三个 /、uri 转义空格以及所有 \ 都切换为 / >

关于javascript - 尝试打开本地文件时,IE 8.0 访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4339734/

相关文章:

javascript - Angular:在订阅中没有使用 promise 的情况下发生 promise 错误

c - 无需复制的 Windows 环形缓冲区

iphone - iPhone 的安全远程密码实现

javascript - 我如何使用 v-for 循环通过 Vue.js 遍历列

javascript - YDKJS - 'this' 是如何工作的?

windows - 有没有一种方法可以自动批准Bamboo远程代理,而无需在Bamboo服务器上手动批准它?

windows - 如何检测我的应用程序是最顶层的窗口

security - Rainbow Tables 攻击甚至是威胁吗?

asp.net-mvc - MVC5 基于声明的身份验证 - 合适的声明项

javascript - 如何使用 requirejs 正确定义 shim 配置