はデフォルトで有効になっていません。
--allow-file-access-from-files
デフォルトで
、ファイル:// URIを:// URIは他のファイルを読み取ることができません。これは、テストのために古い動作が必要な開発者の場合は、 オーバーライドです。セキュリティポリシーにクロムが
--allow-file-access-from-files
せずにAJAXを介してローカル ファイルを読み取ることができないため現時点では
、。しかし、私は は現在 index.htmlと1つのディレクトリにある xml-ファイル(極端な場合はjson)であるWebアプリケーションを作成する必要があります。ユーザーはこのアプリケーションをローカルで に実行できます。 を関数にラップしてjs拡張子に変更せずにxml-(json-)ファイルを読むための回避策がありますか?ユーザーはローカルファイルを使用すると、ユーザーのローカルファイルシステム、FileReader
を使用して、プロセスファイルからファイルをアップロードするユーザーのための<input type="file">
要素を利用することができ、アプリケーションによって使用されるべきであることを認識している場合
、そのアプリケーションを続行。
また、フラグが設定されたクロムを起動する必要があることをアプリケーションに伝えるには、この目的のためのランチャーを作成し、クロムのインスタンスに別のユーザーデータディレクトリを指定します。ランチャーは、上記のコマンドは、デスクトップランチャーを作成せずにterminal
$ /usr/bin/chromium-browser --user-data-dir="/home/user/.config/chromium-temp" --allow-file-access-from-files
で実行することができ、またHow do I make the Google Chrome flag “--allow-file-access-from-files” permanent?
例えば
/usr/bin/chromium-browser --user-data-dir="/home/user/.config/chromium-temp" --allow-file-access-from-files
を参照してください、である可能性があります。ここでクロムのインスタンスが閉じられると、クロムのインスタンスのコンフィグレーションフォルダを削除するには、
$ rm -rf /home/user/.config/chromium-temp
を実行します。フラグが設定されたら
は、ユーザーがファイルを取得するXMLHttpRequest
以外のオプションについてrel="import"
属性を持つ<link>
要素とローカルファイルへhref
ポインティングと"application/xml"
にtype
セットを含めることができます。
const doc = document.querySelector("link[rel=import]").import;
を使用してアクセスXML
document
はIs there a way to know if a link/script is still pending or has it failedを参照してください。
もう一つの選択肢は、しかしより複雑な、LocalFileSystem
でファイルを保存するためにrequestFileSystem
を使用することです。
やChromeアプリを作成または変更を参照してください
chrome.fileSystem
のSeを使用e GoogleChrome/chrome-app-samples/filesystem-access。
最も単純なアプローチは、肯定的なユーザーの操作でファイルをアップロードする手段を提供することです。アップロードしたファイルを処理してから、アプリケーションを続行します。
const reader = new FileReader;
const parser = new DOMParser;
const startApp = function startApp(xml) {
return Promise.resolve(xml || doc)
};
const fileUpload = document.getElementById("fileupload");
const label = document.querySelector("label[for=fileupload]");
const handleAppStart = function handleStartApp(xml) {
console.log("xml document:", xml);
label.innerHTML = currentFileName + " successfully uploaded";
// do app stuff
}
const handleError = function handleError(err) {
console.error(err)
}
let doc;
let currentFileName;
reader.addEventListener("loadend", handleFileRead);
reader.addEventListener("error", handleError);
function handleFileRead(event) {
label.innerHTML = "";
currentFileName = "";
try {
doc = parser.parseFromString(reader.result, "application/xml");
fileUpload.value = "";
startApp(doc)
.then(function(data) {
handleAppStart(data)
})
.catch(handleError);
} catch (e) {
handleError(e);
}
}
function handleFileUpload(event) {
let file = fileUpload.files[0];
if (/xml/.test(file.type)) {
reader.readAsText(file);
currentFileName = file.name;
}
}
fileUpload.addEventListener("change", handleFileUpload)
<input type="file" name="fileupload" id="fileupload" accept=".xml" />
<label for="fileupload"></label>
Cookieが目的の使用に十分なデータを格納できない場合、[ローカルストレージ](https://developer.mozilla.org/en) -US/docs/Web/API/Window/localStorage)? –
現在、私はあなたが必要とするものはまだ不明です、 'プラグインなどで関数なしでchromeにxml/jsonを読み込みますか? 'もう少し詳しく説明してください。 –
可能性のある複製http://stackoverflow.com/questions/7949752/cross-browser-javascript-xml-parsing –