加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – 读取文件:// IE XMLHttpRequest中的URL

发布时间:2020-12-16 01:35:26 所属栏目:百科 来源:网络整理
导读:我正在开发一个 JavaScript应用程序,该应用程序的目的是从Web服务器(通过http)或从文件系统(在文件:// URL)上运行. 作为此代码的一部分,我需要使用XMLHttpRequest将文件加载到与页面和页面子目录相同的目录中. 当在Web服务器上执行时,该代码工作正常(“PASS
我正在开发一个 JavaScript应用程序,该应用程序的目的是从Web服务器(通过http)或从文件系统(在文件:// URL)上运行.

作为此代码的一部分,我需要使用XMLHttpRequest将文件加载到与页面和页面子目录相同的目录中.

当在Web服务器上执行时,该代码工作正常(“PASS”),但在运行文件系统时Internet Explorer 8中不起作用(“FAIL”):

<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控件.

但是,一旦我点击栏和“允许阻止的内容”页面仍然失败;我收到一个“访问被拒绝”错误的xhr.open调用.

这让我困惑,因为MSDN说“为了开发目的,文件://协议是允许从本地计算机区域”.本地文件应该是本地机器区域的一部分,对吧?

我该如何获得这样的代码?提醒用户安全警告,我很好我不能强制他们关闭控制面板的安全性.

编辑:实际上,我不是在我的案例中加载一个XML文档;我正在加载纯文本文件(.txt).

嗯,是不是原生的XMLHttpRequest对象和ActiveX之间的区别?我似乎记得一些事情.也就是说,而不是
var xhr = new XMLHttpRequest();

尝试

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

显然,请放置一些支票来查看浏览器是否支持ActiveX.当然,这仅限于IE.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读