如何在用户的文件系统上创建一个用户可访问的文件,扩展名为 chrome
How to make a user-accessible file on the user's filesystem with a chrome extension
我正在做一个扩展,其中包括在外部编辑器(用户计算机上的一个)中编辑 javascript 文件。该扩展将 javascript 文件保存在 chrome.storage 中,但用户在自己的编辑器中编写代码当然会容易得多。
这就是为什么我决定找到在用户的文件系统上创建文件的东西,用户可以自己找到并编辑它,如果有任何更改,同步备份到扩展(通过定期检查或者通过使用一些监听器)。
我环顾四周,但似乎没有什么适合我正在尝试做的事情。 Chrome 的文件系统 API 仅适用于 chrome 应用程序,不适用于 chrome 扩展,并且 HTML5 文件系统 API 不允许使用简单的文件系统URL 被请求和打开,相反它混淆了存储的文件并使得几乎不可能轻松地编辑该文件。
我看到的其他可能更有希望的是让用户编辑存储扩展名的目录中的一个文件并以某种方式检索该内容。然而,使用 chrome 在 chrome 扩展中进行的所有哈希检查来实现这将有点困难,更不用说扩展对这些文件内容的一般修改(可能通过黑客攻击)通过指定您自己的更新 URL 和 "updating" 将要写入的虚拟 javascript 文件。
有没有什么方法可以简单地请求一个存储文件的位置,然后允许用户编辑该文件并将其同步备份?
不,扩展是来自真实文件系统的沙箱。
如您所说,可以读取扩展程序自己的文件;但是,这对于扩展来说是只读的,并且在已部署的扩展上修改这些文件将导致 Chrome 检测到扩展 "tampering" 并作为预防措施立即禁用。
正如 wOxxOm 所建议的那样,Chrome 扩展逃离沙箱的唯一方法是 Native Host 模块。请注意,这不能在带有扩展名的 Chrome 网上商店中分发;它需要一个单独的安装程序。
或者,您可以使用某种带有 API 的云存储来访问它;例如用户可以将某些内容存储在 Dropbox 子文件夹中,您的扩展程序可以通过 Dropbox API 授权访问它。不幸的是,没有 "native" 像 syncFileSystem
的应用程序解决方案。
我正在做一个扩展,其中包括在外部编辑器(用户计算机上的一个)中编辑 javascript 文件。该扩展将 javascript 文件保存在 chrome.storage 中,但用户在自己的编辑器中编写代码当然会容易得多。
这就是为什么我决定找到在用户的文件系统上创建文件的东西,用户可以自己找到并编辑它,如果有任何更改,同步备份到扩展(通过定期检查或者通过使用一些监听器)。
我环顾四周,但似乎没有什么适合我正在尝试做的事情。 Chrome 的文件系统 API 仅适用于 chrome 应用程序,不适用于 chrome 扩展,并且 HTML5 文件系统 API 不允许使用简单的文件系统URL 被请求和打开,相反它混淆了存储的文件并使得几乎不可能轻松地编辑该文件。
我看到的其他可能更有希望的是让用户编辑存储扩展名的目录中的一个文件并以某种方式检索该内容。然而,使用 chrome 在 chrome 扩展中进行的所有哈希检查来实现这将有点困难,更不用说扩展对这些文件内容的一般修改(可能通过黑客攻击)通过指定您自己的更新 URL 和 "updating" 将要写入的虚拟 javascript 文件。
有没有什么方法可以简单地请求一个存储文件的位置,然后允许用户编辑该文件并将其同步备份?
不,扩展是来自真实文件系统的沙箱。
如您所说,可以读取扩展程序自己的文件;但是,这对于扩展来说是只读的,并且在已部署的扩展上修改这些文件将导致 Chrome 检测到扩展 "tampering" 并作为预防措施立即禁用。
正如 wOxxOm 所建议的那样,Chrome 扩展逃离沙箱的唯一方法是 Native Host 模块。请注意,这不能在带有扩展名的 Chrome 网上商店中分发;它需要一个单独的安装程序。
或者,您可以使用某种带有 API 的云存储来访问它;例如用户可以将某些内容存储在 Dropbox 子文件夹中,您的扩展程序可以通过 Dropbox API 授权访问它。不幸的是,没有 "native" 像 syncFileSystem
的应用程序解决方案。