2012-11-27 38 views
0

我想尝试使用HTML上的小屏幕输出文件。每次我点击按钮我想要替换文件中的文本。这是我写的代码:写入html中的文本文件

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>This is Web App</title> 
</head> 
<script> 
function createDoc() 
{ 
var doc=document.open("answer.txt","replace"); 
var txt="<html><body>You clicked Allow</body></html>"; 
doc.write(txt); 
doc.close(); 
} 

function createDoc2() 
{ 
var doc=document.open("answer.txt","replace"); 
var txt="<html><body>You clicked Deny</body></html>"; 
doc.write(txt); 
doc.close(); 
} 
</script> 

<body> 
<h1> This is the visitor at your house</h1> 
<img src = "./images/chef.gif" width="130" height="101" /> 
<br /> 
<button name="Yes" type="button" onclick="createDoc()">Allow! </button> 
<button name="No" type="button" onclick="createDoc2()">Deny! </button> 


</body> 
</html> 

我知道这不是正确的做法,但我正在努力学习。请帮助我并指出我的错误,并告诉我如何尽可能纠正错误。我知道可能会有很多。我现在只是想教自己。非常感谢您的帮助。

+0

我不知道这甚至可能o.O –

+0

呃,那是因为你不能。有HTML5 File API,但这听起来不像你想要做的。这将是一个巨大的安全风险... – tjameson

+0

@tjameson我有一个想法,它不会工作,但想尝试。有没有办法像发送Get请求或其他内容? –

回答

0

如果你只是想下载你的页面生成一个文件,这个问题可能会有所帮助:

Download data url file

的想法是,你需要编码您的数据为base64(不硬,现代浏览器的支持btoa)并指示浏览器打开它。如果通过给文件一个MIME类型来欺骗它,它不知道如何打开(例如application/octet-steam),它将下载文件而不是显示它。

此解决方案的问题是您无法命名该文件。

如果你想给文件命名,我POST数据到Web服务器,把它写在服务器上的文件,然后做一个window.open与文件路径。这将允许你下载有问题的文件。

有一个正在进行的草案允许Javascript直接写入文件,但该文件将位于用户无法直接访问的沙盒位置。这仅适用于Web应用程序在客户端上存储大量数据。从你的问题来看,这可能不是你想要的。尝试以上解决方案之一。

+0

[HTML5Rocks - 客户端保存生成文件](http://updates.html5rocks.com/2011/08/Saving-generated-files-on-the-client-side) –

+0

@ Derek - '但不幸的是它最终会从规范中删除。没有什么支持。 – tjameson

+0

根据[规范](http://www.w3.org/TR/file-writer-api/#the-filesaver-interface),他们不会删除它。 –