繁体   English   中英

在Firefox中,使用Javascript写入文件?

[英]In Firefox, Write to a File using Javascript?

情况: - 我创建了一个安装设置(本地),返回一个URL,例如: - ved.test.com,映射到IP 11.22.33.44。 因此,要在安装后使Web应用程序可访问,用户必须明确地在“C:\\ WINNT \\ system32 \\ drivers \\ etc”目录下的hosts文件中创建一个条目。

方法: - 安装应用程序完成后,应用程序使用Javascript写入文件。

问题: - IE支持使用Javascript编写文件。 我需要一个Firefox解决方案。 使用的代码: -

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Write To A File</title>
<script language="javascript">
    function WriteToFile()
    {
    /* The below statement is supported in IE only */
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var s = fso.CreateTextFile("C:\\Test.txt", true);
    s.WriteLine('IE Supports Me!');
    s.Close();
    }
</script>
</head>
    <body onLoad="WriteToFile()">
</body>
</html>

还提到了SO中的链接: - 如何使用JavaScript读写文件

请提供支持使用在Firefox浏览器中运行的Javascript编写文件的解决方案。

提前致谢。

出于明显的安全原因,你无法做到这一点。 JavaScript无法访问文件系统...在IE中它不是JavaScript,而是ActiveX这样做......它只是暴露了一个JavaScript API。

问题不在于Firefox没有这样做......这就是IE曾经允许它:)

您需要创建自己的Firefox扩展 ,因为读/写本地文件被视为特权操作。

使用XPCOM读取/写入文件: https//developer.mozilla.org/en-US/docs/Code_snippets/File_I_O 这不适用于您的网页,只能来自特权代码,例如扩展程序。

虽然Firefox不允许你硬编码到特定的路径,你可以让它向用户提供一个对话框,用户可以手动将它保存到路径,虽然他们也需要更改文件类型(所以我知道这个不是很实用): https//stackoverflow.com/a/13696029/271577 同一篇文章还展示了如何在新选项卡中打开文件内容,用户可以使用浏览器的保存功能手动保存文件(这种方法的好处是文件扩展名默认为.txt(和它一样)在某些情况下可以很好,它可以为用户提供内容的预览))。

顺便说一句,虽然火狐曾经有过允许HTML获得与用户权限权限的土办法,enablePrivilege现在出了门 ,我上附加称为工作AsYouWish允许特权(如桌面文件写入)是在每个站点的基础上请求用户,虽然我希望它最终可能进入Firefox(需要白名单),但它目前需要安装附加组件(它仍然是alpha / beta,有一个最终确定或完成的事情的数量,最重要的是强制要求使用https来避免中间人攻击。 它目前使用我认为可能在将来与其他浏览器一起使用的API,它会告知用户确切地要求哪些特权,并且它不要求开发人员每次想要他们的时候都要编写新的插件站点请求来自用户的特权访问。

有关在Firefox中执行此操作的信息,请参阅https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

它看起来像这样:

var file = Components.classes["@mozilla.org/file/local;1"].
       createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("/home");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM