2013-05-05 71 views
0

你好,我有问题,我的HTML/JavaScript代码: 在javascript中写入文件。不工作

function rf() 
{ 

    var fs,file; 

    fs = new ActiveXObject('Scripting.FileSystemObject'); 

    file = fs.OpenTextFile('/test123.txt',2); 

    file.Write('The text to write to file'); 

    file.Close(); 

} 

</script> 
<button onclick="rf()">Try it</button> 
</html> 

我去的页面上,按一下按钮,没有成功。有人能为我纠正这个问题吗?

+2

这只适用于Internet Explorer,不适用于其他浏览器。 – DOK 2013-05-05 19:58:06

+0

您应该为此使用AJAX,并让您的服务器端代码处理文件处理。 – 2013-05-05 20:00:09

+0

只有在安全设置足够低的情况下才能在IE中使用。 – JJJ 2013-05-05 20:00:49

回答

1

即使Internet Explorer在默认情况下也不允许使用此构造 - 在任何版本中 - 您都需要手动切换一些非常危险的设置以允许此设置。 Javascript在浏览器中的全部用途是在浏览器进程内部使用沙箱,并且完全无法访问甚至写入周围的计算机及其文件系统。如果此代码可以工作,那么会阻止某人对您的System32文件夹中的文件执行相同操作?或者hiberfil.sys?或autoexec.bat?不用说,你试图达到的目标不能也不应该在任何计算机上,任何浏览器上工作。

Microsoft documentation on the subject

由于使用FSO在客户端可以提供潜在 到客户端的本地文件系统的访问不受欢迎,你应该使用它 只在服务器端执行的脚本。 Internet Explorer默认的 安全设置不允许客户端使用FileSystemObject 对象。覆盖这些默认设置可能会使本地计算机对文件系统造成不受欢迎的访问,这可能会导致文件系统完整性受损,从而导致数据丢失或者更糟糕。