我正在制作一个扩展,除其他外,它可以在外部编辑器(用户计算机上的编辑器)中编辑 javascript 文件。该扩展程序将 javascript 文件保存在 chrome.storage 中,但用户在自己的编辑器中编写代码当然会更容易。
这就是为什么我决定找到一些东西,在用户的文件系统上创建一个文件,用户可以自己找到并编辑它,如果进行了任何更改,则将其同步备份到扩展(通过定期检查或通过使用一些监听器)。
我环顾四周,但似乎没有什么真正适合我想做的事情。 Chrome 的文件系统 API 仅适用于 Chrome 应用程序,不适用于 Chrome 扩展,并且 HTML5 文件系统 API 不允许请求和打开简单的文件系统 URL,相反,它会混淆存储的文件,并且几乎不可能轻松编辑该文件。
我研究过的其他可能更有前途的方法是让用户编辑存储扩展名的目录中的文件之一并以某种方式检索该内容。然而,使用 chrome 扩展程序中进行的所有哈希检查来实现这会有点困难,更不用说扩展程序对这些文件内容的一般修改(可能通过指定您自己的更新 URL 和“更新”来进行黑客攻击)。 “将要写入的虚拟 JavaScript 文件)。
有没有什么方法可以简单地询问存储文件的位置,然后允许用户编辑该文件并将其同步备份?
最佳答案
不,扩展是从真实文件系统沙箱中取出的。
正如你所说,可以读取扩展程序自己的文件;但是,这对于扩展程序来说是只读的,修改已部署扩展程序上的这些文件将导致 Chrome 检测到扩展程序“篡改”并立即禁用以作为预防措施。
正如 wOxxOm 所建议的那样,Chrome 扩展程序逃离沙箱的唯一方法是 Native Host模块。请注意,此扩展程序无法在 Chrome Web Store 中分发;它需要一个单独的安装程序。
或者,您可以使用某种带有 API 的云存储来访问它;例如用户可以在 Dropbox 子文件夹中存储某些内容,并且您的扩展程序可以通过 Dropbox API 授权对其进行访问。不幸的是,没有像应用程序的 syncFileSystem
这样的“ native ”解决方案。
关于javascript - 如何使用 chrome 扩展在用户的文件系统上创建用户可访问的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31766832/