2012-11-27 35 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),他們不會刪除它。 –