Я разрабатываю приложение JavaScript, предназначенное для запуска либо с веб-сервера (через http), либо из файловой системы (в файле://URL).
В качестве части этого кода мне нужно использовать XMLHttpRequest для загрузки файлов в том же каталоге, что и страница и в подкаталоги страницы.
Этот код отлично работает ( "PASS" ) при выполнении на веб-сервере, но не работает ( "FAIL" ) в 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, которые могли бы получить доступ к вашему компьютеру".
Но даже когда я нажимаю на панель и "Разрешить заблокированный контент", страница все еще не работает; Я получаю сообщение "Доступ отрицается" при вызове xhr.open.
Это меня озадачивает, потому что MSDN говорит, что "Для целей разработки протокол file://разрешено в зоне локального компьютера." Этот локальный файл должен быть частью зоны локального компьютера, правильно?
Как я могу заставить код работать так? Я в порядке, предлагая пользователю предупреждения о безопасности; Я не в порядке, заставляя их отключать безопасность на панели управления.
EDIT: Я действительно не загружаю XML-документ в моем случае; Я загружаю простой текстовый файл (.txt).