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

2023-12-25

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

谢谢...


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

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

但在您进一步阅读之前,请注意一个警告:

这不是标准的 JavaScript,我不会推荐这种方法,除非您正在开发一个非常特定的应用程序,该应用程序将以非常特定的方式使用(例如,http://www.tiddlywiki.com/ http://www.tiddlywiki.com/仅客户端 JavaScript-HTML wiki)。

在网站上请求 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 https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Mozilla Firefox 中使用 javascript 创建文件 的相关文章

随机推荐

  • 使用 htaccess 从特定文件夹中删除 SSL 集成

    我的整个网站都集成了 SSL 并放置了 htaccess 代码 以便在任何人访问我的域 URL 时重定向到 https 但我想将一个文件夹保留在 https 重定向之外 请帮我解决这个问题 下面是放置在我的根目录中的 htaccess 代码
  • 使用 pandas.merge_asof 进行全外连接

    您好 我需要将一些时间序列数据与最近的时间戳对齐 所以我认为pandas merge asof可能是一个很好的候选人 但是 它没有设置选项how outer 就像标准中一样merge method 一个例子可以是 df1 Value1 Ti
  • form_for 中 :model 和 @model 的区别?

    使用 form for 以下方式有什么区别 and 使用 user 是否会自动对 URL 操作使用 CRUD 方法 如果你只是给出一个模型实例 例如 user如果不指定操作 如第一个
  • Django:删除关系末尾时不会触发 m2m_changed

    NOTICE 由于生产环境限制 我必须坚持django 1 4暂时 我刚刚做了一个测试 看看当 ManyToMany 发生变化时是否可以挂钩事件 我有一个Group模型可容纳多个Item对象 每当任何组中的项目发生变化时 我都想对相关的 G
  • 将 CGPathRef 转换为 NSBezierPath

    在 Apple 文档中 他们为您提供了如何将 NSBezierPath 转换为 CGPathRef 的代码 我需要以相反的方式进行转换 从 CGPathRef 转换为 NSBezierPath UIBezierPath 有一个名为 cgPa
  • Azure 混合连接管理器不起作用

    要求 我有一个本地部署SQL服务器 and an Azure 网络应用服务需要互相交谈 我在另一台计算机上安装了混合连接管理器 该计算机与 SQL 服务器位于同一 LAN 中 我们将此计算机称为连接电脑 工作部分 安装和配置非常简单 混合连
  • 在officeR的body_add_table()函数中更改字体大小和样式

    我正在尝试更改官员表格中的字体大小body add table 功能 但没有成功 我怎样才能做到这一点 我正在使用以下代码 body add table my doc value tab02 style table template fon
  • CFFILE - 使用组件上传文件

    我有一个表单 我想提交给组件进行处理 CRUD 行为 问题是似乎将多部分 表单数据传递给组件会以某种方式丢失文件位置 当到达应该上传文件的组件部分时 我收到臭名昭著的表单字段不包含文件错误 我不是 100 确定为什么会发生这种情况 但如果我
  • 如何只推送到 Hg 中的一个分支?

    我有一个 Hg 存储库 其中有 3 个分支 但其中两个处于非活动状态 因为我已经将它们合并到我的默认分支中 hg heads显示 3 个头 每个分支一个 尽管汞分支显示其中 2 个分支为 非活动 当我尝试推送我的默认分支时 使用hg Pus
  • InvalidDefinitionException:无法构造“com.vehicle.datatransferobject.VehicleDTO”的实例

    在我在 Spring Boot 中构建的 REST 端点中 我试图传递我的vehicleDTO到我的控制器 但在它到达我的控制器之前 出现了错误 InvalidDefinitionException 无法构造实例com vehicle da
  • 为什么在这个智能合约上使用断言?

    contract Sharer function sendHalf address payable addr public payable returns uint balance require msg value 2 0 Even va
  • TextInputLayout 后缀/前缀[重复]

    这个问题在这里已经有答案了 我想为 TextInputLayout 添加后缀 一个例子取自材料 io https material io guidelines components text fields html text fields
  • RestController 的最佳实践是什么?

    代码约定表明控制器中没有逻辑 一切都应该在服务层处理 我的问题特别是关于返回 ResponseEntity 应该在RestController中处理还是在Service层中处理 我两种方法都尝试过 我认为 RestController 是返
  • 这个spring类BatchPreparedStatementSetter有什么用呢?

    谁能给我简单介绍一下他的春季班 org springframework jdbc core BatchPreparedStatementSetter JavaDoc API 链接 http static springsource org s
  • java 使用机器人类发送击键

    我知道可以使用 Robot Class 在 java 中发送击键 但是有没有办法在目标进程已经启动时指定目标进程 机器人会将击键发送到顶部的应用程序窗口 要将击键发送到特定目标 您需要首先将该目标设置为平台的前台窗口 执行此操作可能需要本机
  • Mongoose如何使用位置运算符从具有特定条件的双重嵌套数组中提取数据,并返回新结果

    假设我有以下架构 id ObjectId 1 title string answers id ObjectId 2 text string upVotes id ObjectId 3 userId ObjectId 4 我想要的是从答案赞成
  • 镜像 Azure DevOps (Azure Repos) 中的所有 GitHub 活动

    我有一个案例 我想将所有内容存储在 Azure DevOps 中 CI CD Scrum 测试 发布 但我仍然想将所有代码托管在 GitHub 上 如何在 Azure DevOps 中镜像 GitHub 中创建的所有分支 合并 提交 PR
  • 如何在结构体定义中初始化数组?

    如何在此结构中将数组值设置为 0 这显然是错误的 我该如何正确地做呢 struct Game board i32 3 3 0 0 0 0 0 0 0 0 0 在一个函数中 这将是 let board i32 3 3 0 0 0 0 0 0
  • 在 testng @AfterMethod 中检测测试失败

    如果测试失败我想截图 我不想用 try catch 块包装所有测试方法 而是想将此逻辑添加到用注释注释的方法中 AfterMethod 我怎样才能在注释的方法中检测到 AfterMethod如果当前测试失败 如果方法注释为 AfterMet
  • 如何在 Mozilla Firefox 中使用 javascript 创建文件

    我想用 javascript 编写一个函数 它创建一个文件并向其中写入一些内容 我正在使用 Firefox 任何人都可以在这种情况下帮助我 谢谢 您可以在 Firefox 中使用 JavaScript 编写文件 但必须使用 XPCOM 对象