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

How to make a user-accessible file on the user's filesystem with a chrome extension

本文关键字:用户 创建 文件 访问 扩展 一个 文件系统 chrome      更新时间:2023-09-26

我正在制作一个扩展,其中包括在外部编辑器(用户计算机上的一个)中编辑javascript文件。扩展有javascript文件保存在chrome中。当然,用户在自己的编辑器中编写代码会容易得多。

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

我四处看了看,但似乎没有什么适合我想做的。Chrome的文件系统API只适用于Chrome应用程序,而不是Chrome扩展,HTML5文件系统API不允许一个简单的文件系统URL被请求和打开,相反,它混淆了存储的文件,使得几乎不可能轻松编辑该文件。

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

是否有一种方法可以简单地要求一个存储文件的位置,然后允许用户编辑该文件并将其同步回来?

不,扩展是从实际文件系统中沙箱出来的。

正如你所说的,可以读取扩展名自己的文件;然而,这是只读的扩展和修改部署的扩展上的这些文件将导致Chrome检测扩展"篡改"和立即禁用作为预防措施。

Chrome扩展逃离沙箱的唯一方法是,正如wOxxOm建议的那样,一个本机主机模块。请注意,这不能分布在Chrome网络商店与扩展;需要一个单独的安装程序。

或者,你可以使用某种带有API的云存储来访问它;例如,用户可以在Dropbox子文件夹中存储一些东西,您的扩展可以通过Dropbox API授权访问它。不幸的是,没有像syncFileSystem这样的"原生"解决方案。