gpt4 book ai didi

javascript - 如何在 Mozilla Firefox 中使用 javascript 创建文件

转载 作者:数据小太阳 更新时间:2023-10-29 04:09:36 24 4
gpt4 key购买 nike

我想用 javascript 编写一个函数来创建一个文件并向其中写入一些内容,我正在使用 firefox,在这种情况下有人可以帮助我吗。

谢谢...

最佳答案

您可以在 Firefox 中用 JavaScript 编写文件,但您必须使用 XPCOM 对象(内部浏览器 API)。这对于从网页加载的 JavaScript 是不允许的,它旨在供在 Firefox 附加组件中运行的 JavaScript 使用(具有高级别权限)。

非特权(网页)JavaScript 有一种方法可以请求更多特权,如果用户授予它(将弹出一个对话框请求许可),网页代码将能够写入文件。

但在您进一步阅读之前,警告:

这不是标准的 JavaScript,我不推荐这种方法,除非你正在开发一个非常具体的应用程序,它将以非常具体的方式使用(例如,http://www.tiddlywiki.com/ 客户端 JavaScript-HTML 维基).

在网站上请求 XPCOM 权限是一种不好的做法!它基本上等同于运行您刚刚从站点下载的 .exe。您要求用户以运行 Firefox 的用户身份授予对其计算机的完全访问权限(读、写、执行)。

请求使用XPCOM的权限(这会提示用户确认,没办法避免):

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

然后,使用 XPCOM 对象写入文件(来自 Mozilla Developer Network 的示例代码):

   1. // file is nsIFile, data is a string  
2. var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].
3. createInstance(Components.interfaces.nsIFileOutputStream);
4.
5. // use 0x02 | 0x10 to open file for appending.
6. foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0);
7. // write, create, truncate
8. // In a c file operation, we have no need to set file mode with or operation,
9. // directly using "r" or "w" usually.
10.
11. // if you are sure there will never ever be any non-ascii text in data you can
12. // also call foStream.writeData directly
13. var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].
14. createInstance(Components.interfaces.nsIConverterOutputStream);
15. converter.init(foStream, "UTF-8", 0, 0);
16. converter.writeString(data);
17. converter.close(); // this closes foStream

您可以在此处找到有关在 Firefox 中使用 XPCOM 的 I/O 的更多信息:https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

关于javascript - 如何在 Mozilla Firefox 中使用 javascript 创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3067774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com