当前位置: 首页 > 面试题库 >

在IE XMLHttpRequest中读取file:// URL

胥良平
2023-03-14
问题内容

我正在开发一个JavaScript应用程序,该应用程序可以从Web服务器(通过http)运行,也可以从文件系统(在file:// URL上)运行。

作为此代码的一部分,我需要使用XMLHttpRequest在与页面相同的目录中以及页面的子目录中加载文件。

在Web服务器上执行时,此代码可以正常工作(“通过”),而在文件系统中运行时,此代码在Internet Explorer 8中则无法工作(“失败”):

<html><head>
<script>
window.onload = function() {
  var xhr = new XMLHttpRequest();
  xhr.open("GET", window.location.href, false);
  xhr.send(null);
  if (/TestString/.test(xhr.responseText)) {
    document.body.innerHTML="<p>PASS</p>";
  }
}
</script>
<body><p>FAIL</p></body>

当然,起初它会失败,因为文件系统上根本无法运行任何脚本。将向用户显示一个黄色条,警告该用户:“为了帮助保护您的安全,Internet
Explorer限制了该网页的运行脚本或ActiveX控件,这些脚本或ActiveX控件可以访问您的计算机。”

但是,即使我单击了该栏并单击“允许阻止的内容”,该页面仍会失败;我在xhr.open调用中收到“访问被拒绝”错误。

这让我感到困惑,因为MSDN表示“出于开发目的,允许在本地计算机区域中使用file://协议。” 这个本地文件应该是本地计算机区域的一部分,对吗?

我如何才能获得类似的代码?我可以提示用户安全警告;我不能强迫他们在控制面板中关闭安全性。

编辑: 实际上,我不是在我的情况下加载XML文档。我正在加载纯文本文件(.txt)。


问题答案:

嗯,这可能是本机XMLHttpRequest对象和ActiveX对象之间的区别吗?我似乎还记得那件事。也就是说,代替

var xhr = new XMLHttpRequest();

尝试

var xhr = new ActiveXObject("MSXML2.XMLHTTP");

显然,请进行一些检查以查看浏览器是否支持ActiveX。当然,这也仅限于IE。



 类似资料:
  • 分析网站访问日志应该是一个运维工程师最常见的工作了。所以我们先学习一下怎么用 logstash 来处理日志文件。 Logstash 使用一个名叫 FileWatch 的 Ruby Gem 库来监听文件变化。这个库支持 glob 展开文件路径,而且会记录一个叫 .sincedb 的数据库文件来跟踪被监听的日志文件的当前读取位置。所以,不要担心 logstash 会漏过你的数据。 sincedb 文件

  • 我有一个csv,我正试图读入一个对象数组。我一直得到以下错误。。。JAVAutil。输入不匹配异常我认为这是因为它读取的文件是按空格分割的,而不是按逗号分割的。我想我需要用绳子。split()方法,但我不确定具体怎么做。任何建议。这是我到目前为止的代码。。。 以下是我正在使用的文本文件:

  • 本文向大家介绍node-red File读取好保存实例讲解,包括了node-red File读取好保存实例讲解的使用技巧和注意事项,需要的朋友参考一下 File节点是操作文件的节点 file文件的保存 拖拽 注入节点inject  file节点(writes msg.payload to a file)和 debug节点到工作区,并连线 设置file节点的文件路径 windows如果不设置路径,会

  • 问题内容: 我的项目中有一个图像文件。层次结构如下所示: 我正在尝试使用以下代码将Manling.png读入Manling.java: 我总是声明中得到一个,所以我认为 路径是错误的。我尝试将图像移动到 项目中的其他位置,并尝试更改文件路径(例如 。有任何想法吗? 如果您想要一个完整的可编译示例,请尝试以下示例: } Just set up the project like this, using

  • 我想对一个文件进行读-修改-写,同时我有一个独占锁。显然,我可以使用flock()并执行fopen、flock、fread、fwrite、flock、fclose序列,但是如果我可以使用file_get_contents和file_put_contents,我的代码看起来会更整洁。然而,我需要锁定这两个进程,我想知道是否可以使用flock“以某种方式”做到这一点。当然,危险在于,我会写一些看起来有

  • 问题内容: 我正在使用ImageIO API编写PNG文件。在循环中调用此代码,并导致OutOfMemory错误。无论如何,可以固定以下代码来避免OutOfMemory错误吗?还是增加JVM堆大小的唯一选择? Java堆大小为1024M。 问题答案: 我遇到了类似的问题,我必须读取36张图像,将它们裁剪并保存到一个新文件中(一次一个)。我发现必须在每次迭代后将图像设置为null,以允许Java进行