Web サーバー (http 経由) またはファイル システム (file:// URL) から実行することを意図した JavaScript アプリケーションを開発しています。
このコードの一部として、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 により、この Web ページは、コンピューターにアクセスする可能性のあるスクリプトまたは ActiveX コントロールの実行が制限されています」という警告が表示されます。
しかし、バーをクリックして「ブロックされたコンテンツを許可」しても、ページはまだ失敗します。xhr.open 呼び出しで「アクセスが拒否されました」というエラーが表示されます。
MSDNは、「開発目的で、file:// プロトコルはローカル マシン ゾーンから許可されている」と述べているため、これは私を困惑させます。このローカル ファイルは、ローカル マシン ゾーンの一部である必要があります。
このようなコードを機能させるにはどうすればよいですか? ユーザーにセキュリティ警告を表示しても問題ありません。コントロール パネルでセキュリティを無効にするよう強制するのは、私にはよくありません。
編集:実際、私の場合、XML ドキュメントをロードしていません。プレーン テキスト ファイル (.txt) を読み込んでいます。