2013-10-18 30 views
2

我正在创建一个开发工具,该工具将基于SVG精灵表图形文件创建CSS。该脚本需要将CSS写回到/public/css/main.css。所以,不,我对沙盒文件结构不感兴趣(尽管这很酷)。使用Javascript写入到Chrome和/或Firefox内的文件

请记住,这不是生产。它仅仅是简化我们的工作流程的开发工具(并希望有益于网页设计/开发人员社区)。我调查了--allow-file-access铬开关,但仍然不确定它是否允许写入权限。

所以,我的问题是:如何使用在浏览器中运行的JavaScript将文件写入文件?请记住,这不是为了生产。

+0

已经回答:[如何使用Javascript读取和写入文件](http://stackoverflow.com/questions/585234/how-to-read-and-write-into-file-using-javascript)或[使用Javascript写入文本文件](http://stackoverflow.com/questions/13436398/use-javascript-to-write-to-text-file) – Deviljho

回答

0

答案很简单:

浏览器的

不可能由于安全限制。

您可以添加标记,如:

--allow-file-access 

Chrome操作系统上,文件:除了某些列入白名单的目录//访问被禁用。此开关重新启用file://进行测试。

--allow-file-access-from-files 

默认情况下,file:// URIs不能读取其他file:// URIs。对于那些需要旧测试行为的开发人员来说,这是一种优先考虑。

但所有这些都是为了阅读。我怀疑你会用这种方法取得成功。 MMaybe你应该切换到node.js。在那里,你可以读/写文件(我认为)

更新

对于铬,你可以创建一个NaCL-extension。还有就是禁用的NaCl extenations的snadbox标志:--allow-nacl-file-handle-api

PS: 我认为浏览器将是最困难的运行环境编写的文件,因为:

  1. 没有(或至少是)无文件-API
  2. 文件API无法访问主机文件系统
  3. 浏览器开发尽最大努力创建沙箱。
0

我不认为这是可行的铬/火狐浏览器,但我看过webkit desktop application SDK's。这些类型的SDK应该有文件I/O API的

tide SDK看起来很有趣。

+1

phonegap或corodva也有用于桌面应用程序的端口。 –

+0

看起来这将是最合乎逻辑的方向:创建某种类型的Chrome扩展或应用程序。对于我想要做的事情,这似乎有点夸张,但可行。 – risingtiger

+0

任何指向适用于应用程序/扩展开发的chrome文件I/O在线文档的指针? – risingtiger

0

如果您没有制作Chrome/Firefox扩展程序或桌面应用程序(根据您的说法,我确信您不是),那么在浏览器中无法使用Javascript来做到这一点。您应该使用服务器端语言来实现此类功能,也许可以将更改直接发送到服务器,然后再发回给客户端,但我认为这不符合您的需求。

+0

目前我正在使用服务器端脚本来接收css字符串并将其保存回文件。这使这个工作流程在项目和团队成员中的部署变得复杂,所以希望有一个更简洁的自包含方法。 – risingtiger

+0

@risingtiger AFAIK实现这一目标的唯一方法(和**也许**更简单)就是创建一个浏览器扩展。你可以做的其他事情是允许他们下载(如果需要,也可以上传)这个新创建的css作为一个文件,但这也可能使事情变得复杂。 – Deviljho

+0

我走下了在Chrome中创建扩展的路径,但是,唉,碰上了路障。 Chrome在扩展清单文件中提供一个选项以允许文件访问权限(必须由用户验证)。其语法如下:“permissions”:[“file:// *”,...]。我还没有找到任何关于此的可靠文档,但到目前为止,我得出结论,它只允许读取任何文件的特权,但不具有写入特权。 – risingtiger

0

您可能值得您花时间去探索File-System API

生成的文件存储在Chrome应用程序数据中。您无法在文件系统的其他位置写入文件。然而,也许一个脚本来抓取应用程序数据中的文件,并拉到另一个目录后运行可能就足够了?

这是目前只在少数浏览器中可用,Chrome是绝对包括在内。

相关问题