Tôi đã làm việc trong một dự án trong một vài tháng và tôi sắp sửa hoàn thành nó. Một trong những bước cuối cùng là cung cấp một tệp sẽ được lấp đầy với thông tin đã được tạo ra bởi các hành động của người dùng trong phiên của họ. Can I write files with HTML5/JS? và câu trả lời của ecmanaut đã giúp tôi rất gần kể từ khi ông cung cấp hai phương pháp làm như vậy, một trong html5 thuần túy và một bằng JavaScript.HTML5 JavaScript Tải xuống thuộc tính
Tôi đã sử dụng phương pháp JavaScript đầu tiên chỉ hoạt động trong Chrome chứ không phải trong Mozilla hoặc IE. Vì vậy, tôi đã sử dụng phương pháp html5 thuần túy kết hợp với một số JavaScript thay thế để dán nó vào trang để có thể nhấp.
document.getElementById('download').innerHTML = '<a id="save" download="earth.txt" href="data:text/plain,mostly harmless and a bit more">Save</a>';
Mã này tạo tệp được tải xuống nhưng không chứa dòng mới mà bài viết cho biết là ' '. Vì vậy, tôi đã thực hiện tìm kiếm để xem các mã ký tự khác có thể được nhận ra. http://en.wikipedia.org/wiki/Newline cung cấp cho tôi nhiều lựa chọn khả thi, không có sự lựa chọn nào mà tôi đã thử làm việc. Những cái tôi đã thử là: '& # 10', ' ', '& # 13', ' ', '\ r \ n', '\ r', '\ n', '\ cr', ' \ c \ r ', 0x0D, 0x0A, 0c0D0A. Trong nhiều trường hợp, dòng mới đã bị xóa và không có gì xuất hiện.
Khi thử nghiệm mã ở trên, nó hoạt động trong Mozilla và Chrome (trừ dòng mới), nhưng kết quả trong IE là khác nhau. Khi bạn nhấp vào liên kết Lưu, nó thực sự di chuyển đến trang và có url như nội dung dữ liệu.
Trong khi dự án có thể chấp nhận được mà không có tính năng này hoạt động, tôi rất muốn làm cho nó hoạt động sau khi đã dành quá nhiều thời gian và công sức vào nó và đã đến gần. Tôi cũng cần phải kiểm tra điều này trong Safari nhưng tôi chưa thực hiện bất kỳ thử nghiệm nào trong trình duyệt đó. Trình duyệt hỗ trợ yêu cầu từ quan trọng nhất đến ít nhất là như sau: Mozilla, Chrome, Safari, IE. Nếu có thể tôi muốn tránh mã hóa trình duyệt cụ thể.
Tôi cũng nên đề cập đến như trong liên kết đầu tiên, tôi không muốn gửi đến máy chủ để tải xuống, tôi cần nó hoạt động cục bộ ở phía máy khách mà không tương tác với máy chủ.
Vì vậy, để tổng hợp, tôi cần ít nhất để có được dòng mới làm việc cho tệp để Mozilla và Chrome đều hoạt động hoàn toàn. Và nếu có thể, một cách để có được các tập tin làm việc trong IE là tốt.
Chỉnh sửa: ngày 3 tháng 11 năm 2014 1:40 chiều Giờ địa phương Tôi đã thử chỉnh sửa được đề xuất bởi maths4js về việc thay đổi dấu ngoặc kép và đề xuất không hoạt động. Tôi nhận thấy rằng việc gửi một trang mẫu mã lớn hơn sẽ là một ý tưởng hữu ích. Nó cũng được đề nghị rằng tôi nhìn xem những trình duyệt nào hỗ trợ tính năng này http://caniuse.com/#feat=download và có vẻ như IE và Safari không, vì vậy tôi sẽ không lo lắng về chúng vào lúc này và có thể xuống đường có mã hóa trình duyệt cụ thể cho chúng.
<!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>
Tôi muốn cảm ơn tất cả vì nỗ lực và thời gian bạn đã cho tôi.
giải pháp html5 tất nhiên sẽ chỉ hoạt động trong các trình duyệt hỗ trợ thuộc tính tải xuống. –