clientside filestorage无法从content_scripts中读取文件

时间:2013-10-31 16:42:53

标签: google-chrome-extension webkit

这里的问题是,我在popup.js中使用window.webkitRequestFileSystem撰写的内容可以从那里读取,但我无法从content.js读取。

PS:两个文件中的代码相同

的manifest.json

 {
  "manifest_version": 2,

  "browser_action": {
    "default_popup": "action.html"
  },
  "content_scripts": [
    {
      "js": ["content.js"]
    }
  ],
  "background": {
    "scripts": ["background.js"]
  },
  "permissions": [
    "unlimitedStorage",
  ]
}

action.html

// Here is the popup.js file included

popup.js

window.webkitRequestFileSystem(window.PERSISTENT, 0, readFromFileStorage, errorHandler);

function readFromFileStorage(fs) {
  fs.root.getFile('file.txt', {}, function(fileEntry) {
    fileEntry.file(function(file) {
       var reader = new FileReader();

        reader.onloadend = function(e) {
          console.log(this.result);
        };

       reader.readAsText(file);
    }, errorHandler);
  }, errorHandler);
}

content.js

window.webkitRequestFileSystem(window.PERSISTENT, 0, readFromFileStorage, errorHandler);
// the function 'readFromFileStorage' is the same as in "popup.js"

1 个答案:

答案 0 :(得分:1)

根据 the docs

  

对文件系统施加的安全边界会阻止应用程序访问具有不同来源的数据。

popup.js和注入网页的内容脚本被认为是两个不同的来源,因此您无法从另一个文件系统中访问存储在一个文件系统中的数据。 根据您的要求和特殊设置, Message Passing ,您可以使用消息传递在内容脚本和弹出窗口或后台页面之间进行通信和传递数据。