此代码在 jsFiddle 上运行良好,但在我的系统上运行不正常。 JsFiddle
我已经检查了草稿(在 jsFiddle 上按 Ctrl + Shift + Enter),将此代码添加到标题部分并修改如下:
window.addEvent('load', function() {
window.webkitRequestFileSystem(window.TEMPORARY, 2*1024*1024, function(fs) {
fs.root.getFile('test', {create: true}, function(fileEntry) {
alert(fileEntry.toURL());
fileEntry.createWriter(function(fileWriter) {
var builder = new WebKitBlobBuilder();
builder.append("Saurabh");
builder.append("\n");
builder.append("Saxena");
var blob = builder.getBlob('text/plain');
fileWriter.onwriteend = function() {
// navigate to file, will download
location.href = fileEntry.toURL();
};
fileWriter.write(blob);
}, function() {});
}, function() {});
}, function() {});
});
最佳答案
你得到一个 FileError.SECURITY_ERR
因为你不被允许在本地运行这个代码。如果您没有空的错误处理程序,您会看到错误。
如果将以下代码保存到本地文件并在 chrome 中运行,您将看到错误:
<html>
<script>
function doit() {
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);
}
window.webkitRequestFileSystem(window.TEMPORARY, 1024*1024, function(fs) {
fs.root.getFile('test', {create: true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
var builder = new WebKitBlobBuilder();
builder.append("Saurabh");
builder.append("\n");
builder.append("Saxena");
var blob = builder.getBlob('text/plain');
fileWriter.onwriteend = function() {
// navigate to file, will download
location.href = fileEntry.toURL();
};
fileWriter.write(blob);
}, errorHandler);
}, errorHandler);
}, errorHandler);
}
</script>
<body onload="doit();">
</body>
</html>
关于javascript - 代码在 jsFiddle 上运行良好但在本地系统上运行不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7689380/