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

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

我正在制作一个扩展,除其他外,它可以在外部编辑器(用户计算机上的编辑器)中编辑 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/

相关文章:

javascript - 如何遍历 Angular 2 中的对象属性

jquery - 在 Accordion 中构建自定义复选框

即使在 Chrome 上进行 URL 重定向后,Jquery 仍会继续运行

html - YouTube嵌入代码不适用于Firefox的html

javascript - 即使条件为 false,if 语句也会执行

javascript - 接受部分用户输入字符串

javascript - 如何使用 jquery 查找匹配选择器类和数据属性

javascript - 加载我的网站时从我的服务器获取图像

html - 在 Navbar 中没有扩展的简单 Bootstrap 下拉列表中苦苦挣扎

javascript - Chrome 38 中的 ecmascript 6 特性