Chrome で実行する HTML5 アプリを作成していますが、それはローカル ファイル システム上にあります (そのため、HTML ファイルをダブルクリックして起動します)。ファイルシステムにアクセスしようとするとエラーがスローされますが、それはローカル ファイルであるためだと思います。Chromeでこれを許可する方法はありますか?
(注:アプリを永続的に保存することを許可するように求めるポップアップが表示され、「OK」をクリックします。それでもこのエラーがスローされます)
以下のコードはエラーをスローします。
DOMException {message: "NotSupportedError: DOM Exception 9", name: "NotSupportedError", code: 9, INDEX_SIZE_ERR: 1, DOMSTRING_SIZE_ERR: 2…}
ファイルtest.html
<!DOCTYPE html>
<html>
<head></head>
<body>
<script>
//File System handler
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
function onInitFs(fs) {
console.log('Opened file system: ' + fs.name);
}
function errorHandler(e) {
var msg = '';
switch (e.code) {
case FileError.QUOTA_EXCEEDED_ERR:
msg = 'QUOTA_EXCEEDED_ERR';
break;
case FileError.NOT_FOUND_ERR:
msg = 'NOT_FOUND_ERR';
break;
case FileError.SECURITY_ERR:
msg = 'SECURITY_ERR';
break;
case FileError.INVALID_MODIFICATION_ERR:
msg = 'INVALID_MODIFICATION_ERR';
break;
case FileError.INVALID_STATE_ERR:
msg = 'INVALID_STATE_ERR';
break;
default:
msg = 'Unknown Error';
break;
};
console.log('Error: ' + msg);
}
/** THIS CAUSES IT TO THROW AN ERROR */
window.webkitStorageInfo.requestQuota(window.PERSISTENT, 5*1024*1024, function(grantedBytes) {
window.requestFileSystem(window.PERSISTENT, grantedBytes, onInitFs, errorHandler);
}, function(e) {
console.log('Error', e);
});
</script>
</body>
</html>
代わりに一時ストレージを要求するように変更すると、まだエラーがスローされますが、現在は次のようになりますSECURITY_ERR
。
window.requestFileSystem(window.TEMPORARY, 5*1024*1024, onInitFs, errorHandler);