我正在开发一个
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说“为了开发目的,文件://协议是允许从本地计算机区域”.本地文件应该是本地机器区域的一部分,对吧?
嗯,是不是原生的XMLHttpRequest对象和ActiveX之间的区别?我似乎记得一些事情.也就是说,而不是
var xhr = new XMLHttpRequest();
尝试
var xhr = new ActiveXObject("MSXML2.XMLHTTP");
显然,请放置一些支票来查看浏览器是否支持ActiveX.当然,这仅限于IE.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。