我正在为 chrome 编写一个 js 扩展,它应该下载多个创建的文件。问题是 chrome 自动在当前选项卡中的以下地址打开文件:文件系统:https : //stackoverflow.com//temporary/myfile.ini,其次,如果我在这样的阵列上循环 fileini = [ [" filename",file-content], [], ... ] 它只打印最后一个,如果我尝试使用 setTimeout 循环它,我会从控制台收到错误
下面我发布代码
函数createDataFile(文件名,内容){
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.TEMPORARY, 1024 * 1024 * 20, function(fs) {
fs.root.getFile(filename, {
create : true
}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
var blob = new Blob(content);
console.log("5");
fileWriter.addEventListener("writeend", function() {
// navigate to file, will download
location.href = fileEntry.toURL();
}, false);
fileWriter.write(blob);
}, function() {
});
}, function() {
});
}, errorHandler);
}
函数 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);
}
创建文件循环();
function prnt(x) {
var y;
if (fileini[x] !== undefined) {
createDataFile(fileini[x][0], objToArray(fileini[x][1]));
y = x - 1;
console.log("printed file" + x);
} else {
y = x - 1;
}
if (x > 0)
return setTimeout(function() {
console.log("going to print file " + y);
prnt(y);
}, 500);
else
return 0;
}
prnt(fileini.length - 1);
}
函数 createFileCycle() 如上所述创建 fileini 数组
我希望有人能帮助我。顺便说一句,几个月前在一台运行 ubuntu 32bit 的旧笔记本上我让它工作,现在在 Windows 7 上它不起作用,我无法解决这个问题。