如何使用chrome扩展名在用户的文件系统上创建用户可访问的文件

时间:2015-08-01 22:30:12

标签: javascript html5 google-chrome google-chrome-extension html5-filesystem

我正在进行扩展,除其他外,在外部编辑器中编辑javascript文件(用户计算机上的一个)。扩展程序将javascript文件保存在chrome.storage中,但用户在自己的编辑器中编写代码会更容易。

这就是为什么我决定找到在用户的文件系统上创建文件的原因,用户可以自己找到并编辑它,如果有任何更改,请将其同步回扩展(通过定期检查或通过使用一些听众)。

我环顾四周,但似乎没有什么比我想做的更合适。 Chrome的fileSystem API仅适用于Chrome应用,而不适用于chrome扩展,HTML5 fileSystem API不允许请求和打开简单的文件系统URL,而是对存储的文件进行模糊处理,并且几乎不可能轻松编辑该文件。

我看到的其他可能更有希望的是让用户编辑存储扩展名的目录中的一个文件,并以某种方式检索该内容。然而,使用chrome在chrome扩展中进行的所有哈希检查实现这一点有点难以实现,更不用说扩展一般修改这些文件的内容了(可能通过指定自己的更新URL和“更新”进行黑客攻击) “将要写入的虚拟javascript文件。”

有没有办法简单地要求存储文件的位置,然后允许用户编辑该文件并将其同步回来?

1 个答案:

答案 0 :(得分:1)

不,扩展是从真实文件系统中沙箱化的。

正如您所说,可以阅读扩展程序自己的文件;但是,这对于扩展程序是只读的,并且在已部署的扩展程序上修改这些文件将导致Chrome检测到扩展程序“篡改”并立即禁用作为预防措施。

正如wOxxOm建议的那样,Chrome扩展程序逃离沙箱的唯一方法是Native Host模块。请注意,这不能在带有扩展名的Chrome网上应用店中分发;它需要一个单独的安装程序。

或者,您可以使用某种带有API的云存储来访问它;例如用户可以在Dropbox子文件夹中存储内容,您的扩展程序可以通过Dropbox API授权访问它。不幸的是,对于Apps,没有像syncFileSystem这样的“原生”解决方案。