的情况: - 我创建了一个返回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中的链接: - How to read and write into file using JavaScript
请提供支持使用在 Firefox 浏览器中运行的Javascript编写文件的解决方案。
先谢谢。
答案 0 :(得分:14)
由于明显的安全原因,你无法做到这一点。 JavaScript无法访问文件系统...在IE中它不是JavaScript,而是ActiveX执行此操作......它只是暴露了JavaScript API。
问题不在于Firefox没有这样做......这是IE曾经允许的:)
答案 1 :(得分:3)
您需要create your own Firefox extension,因为读/写本地文件被视为特权操作。
使用XPCOM读取/写入文件:https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O。这不适用于您的网页,只能使用特权代码,例如扩展程序。
答案 2 :(得分:1)
有关在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");
答案 3 :(得分:1)
虽然Firefox不允许您对特定路径进行硬编码,但您可以让它向用户提供一个对话框,用户可以手动将其保存到路径中,尽管他们还需要更改文件类型(所以我知道这不太实际):https://stackoverflow.com/a/13696029/271577。同一篇文章还展示了如何在新选项卡中打开文件内容,用户可以使用浏览器的保存功能手动保存文件(这种方法的好处是文件扩展名默认为.txt(和它一样)在某些情况下可以很好,因为它可以让用户预览内容))。
顺便提一下,尽管Firefox曾经允许HTML获得用户权限的本机方式,但enablePrivilege现在是out the door,我正在开发一个名为AsYouWish的加载项,它允许特权访问(例如桌面文件写入)是基于每个站点的用户请求,虽然我希望它最终可以进入Firefox(需要白名单),但它目前需要安装附加组件(并且它仍处于alpha / beta状态,有许多事情需要最终确定或解决,最重要的是强制要求使用https来避免中间人攻击。它目前使用我认为可能在将来与其他浏览器一起使用的API,它会告知用户确切地要求哪些特权,并且它不要求开发人员每次想要他们的时候都要编写新的插件站点请求来自用户的特权访问。