我開發的意思是運行無論是從Web服務器(通過HTTP)或文件系統中的JavaScript應用//網址。讀取文件:(:// URL上的文件),在IE瀏覽器的XMLHttpRequest
由於該代碼的一部分,我需要使用XMLHttpRequest在相同的目錄頁,在頁面的子目錄加載文件。
此代碼工作正常(「PASS」)時,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控件。」
但甚至一度我點擊欄和「允許阻止的內容」頁面仍然失敗;我在xhr.open調用中收到「訪問被拒絕」錯誤。
這讓我爲難,因爲MSDN說,「爲發展宗旨,在file://協議從本地計算機區域允許的。」這個本地文件應該是本地計算機區域的一部分,對吧?
我怎樣才能得到這樣的代碼工作?我很好地提醒用戶安全警告;我強迫他們關閉控制面板中的安全措施並不好。
編輯:我沒有,事實上,加載一個XML文檔在我的情況;我正在加載一個純文本文件(.txt)。
你嘗試過var xhr = new ActiveXObject(「MSXML2.XMLHTTP」); (請參閱下面的答案)?這不應該侷限於XML文件。但它將僅限於IE。 – Don 2010-01-26 20:43:31
FWIW,我在Chrome中遇到同樣的問題,基本上是一樣的。 – apollodude217 2013-01-24 15:36:52