我一直在爲一個項目工作了幾個月,現在我已接近尾聲了。最後一個步驟之一是提供一個文件,該文件將填充由用戶在會話期間的動作產生的信息。 Can I write files with HTML5/JS? ecmanaut的回答讓我非常接近,因爲他提供了兩種方法,一種使用純html5,一種使用JavaScript。HTML5 JavaScript下載屬性
我第一次使用的JavaScript方法只能在Chrome中使用,而不是在Mozilla或IE中使用。所以我使用純html5方法結合一些替代JavaScript將它粘貼到頁面,因此它是可點擊的。
document.getElementById('download').innerHTML = '<a id="save" download="earth.txt" href="data:text/plain,mostly harmless and a bit more">Save</a>';
此代碼創建它下載的文件,但不包含該文章說的是「 」換行。所以我做了一個搜索,看看可以識別哪些字符代碼。 http://en.wikipedia.org/wiki/Newline爲我提供了很多可能的選擇,沒有任何我嘗試過的。我試過的是:'&#10',' ','&#13',' ','\ r \ n','\ r','\ n','\ cr',' \ c \ r',0x0D,0x0A,0c0D0A。在很多情況下,換行符被刪除,沒有任何內容會出現。
在測試上述代碼時,它在Mozilla和Chrome(不包括換行符)中工作,但IE中的結果不同。當你點擊保存鏈接時,它實際上會移動到頁面並且具有作爲數據內容的URL。
雖然如果沒有這個功能,這個項目可能會被接受,但我非常希望在花了這麼多時間和精力並且變得如此接近之後纔開始工作。我也需要在Safari中進行測試,但我還沒有在該瀏覽器中進行任何測試。從最重要到最不重要的瀏覽器支持如下所示:Mozilla,Chrome,Safari,IE。如果可能的話,我想避免瀏覽器的具體編碼。
我還應該提到,就像在第一個鏈接中,我不想發送到服務器進行下載,我需要它在客戶端的本地工作而不需要服務器交互。
所以總結起來,我至少需要讓文件的換行符工作,以便Mozilla和Chrome都能夠正常工作。如果可能的話,也是一種讓文件在IE中工作的方法。
編輯:2014年11月3日下午1點40分當地時間 我已經嘗試了maths4js關於更改我的報價和建議沒有奏效的建議編輯。我注意到提交一個更大的示例代碼頁面將是一個有用的想法。還有人建議我看看哪些瀏覽器支持此功能http://caniuse.com/#feat=download,並且IE和Safari似乎沒有,所以我現在不會擔心它們,並且可能在瀏覽器中爲它們編寫特定的代碼。
<!DOCTYPE HTML>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><style>body{margin: 0px;padding: 0px;}</style></head><body><center><br><div id='download'></div></center>
<script>
function download(){
//var newline= '
'; //no line breaks
//var newline= ' '; //no line breaks
//var newline= " "; //no line breaks
//var newline= "
"; //no line breaks
//var newline= "\r\n"; //no line breaks
//var newline= "\r\n;"; //appends ; but no line breaks
//var newline = '\n'; //no line break
//var newline = '/n'; //completely failed
var newline = 0x0D0A;
var tab = " ";
var text = "Title of the document" + newline;
text += "Just a line of text : ";
text = text +"Random";
text = text + newline + "Trial" + tab + "Time" + tab + "Correct" + newline;
//document.getElementById('download').innerHTML = '<a id="save" download="This_File.txt" href="data:text/plain,'+text+'">Save</a>';
//document.getElementById('download').innerHTML = '<a id="save" download="earth.txt" href="data:text/plain,mostly harmless and a bit more">Save</a>';
document.getElementById('download').innerHTML = "<a id='save' download='earth.txt' href='data:text/plain,mostly harmless and a bit more'>Save</a>";
}
download();
</script>
</body>
</html>
我想感謝大家爲我付出的努力和時間。
html5解決方案當然只適用於支持下載屬性的瀏覽器。 – 2014-11-03 19:31:42