javascript - 代码在 jsFiddle 上运行良好但在本地系统上运行不正常

标签 javascript file-io google-chrome-extension

此代码在 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/

相关文章:

javascript - 当对象数组的属性值改变时触发函数

javascript - 如何遍历本地(服务器端)文件夹的所有元素?

java - 从另一个方法传递数组作为参数

javascript - lodash 将对象的对象转换为对象数组,包括其中的键

javascript - $ ('elems' ).each() 带有粗箭头

javascript - 如何从字符串 jquery/javascript 中过滤表情符号?

performance - 使用大量小文件改进 Fortran 格式的 I/O

google-chrome-extension - Chrome 扩展弹出窗口关闭时是否有事件?

javascript - 如何创建一个 setInterval 循环来编辑 chrome url

javascript - 小于和大于会产生意想不到的结果。