Tôi đang viết một số mã Javascript tạo một tài liệu XML trong ứng dụng khách (qua Google Earth plugin). Tôi muốn người dùng có thể nhấp vào nút trên trang và được nhắc lưu XML đó vào tệp mới. Nếu tôi đã tạo ra phía máy chủ XML, điều này sẽ dễ dàng, chỉ cần làm cho nút mở liên kết. Nhưng XML được tạo ra phía máy khách.Làm cách nào để tự động tạo tài liệu để tải xuống trong Javascript?
Tôi đã tìm ra một vài cú hích làm việc nửa, lấy cảm hứng một phần bởi this StackOverflow question. Nhưng không hoàn toàn làm việc. Dưới đây là một bản demo HTML có mã nhúng:
<html><head><script>
function getData() { return '<?xml version="1.0" encoding="UTF-8"?><doc>Hello</doc>'; }
function dlDataURI() {
window.open("data:text/xml;charset=utf-8," + getData());
}
function dlWindow() {
var w = window.open();
w.document.open();
w.document.write(getData());
w.document.close();
}
</script><body>
<div onclick="dlDataURI()">Click for Data URL</div>
<div onclick="dlWindow()">Click for Window</div>
</body></html>
Phiên bản dlDataURI() hoạt động tốt trong Firefox, kém trong Chrome (không thể lưu) và hoàn toàn không có trong IE. Phiên bản Window() hoạt động OK trong Firefox và IE và không tốt trong Chrome (không thể lưu, XML được nhúng bên trong HTML). Cả hai phiên bản đều không nhắc người dùng tải xuống, nó luôn mở một cửa sổ mới đang cố gắng hiển thị XML.
Có cách nào tốt để làm những gì tôi muốn trong Javascript phía khách hàng không? Tôi muốn điều này hoạt động trong các trình duyệt hiện nay, lý tưởng nhất là Firefox, MSIE 8 và Chrome.
Cập nhật với mẫu mã Downloadify
window.onload = function() {
Downloadify.create("dlify", {
data: getData(),
filename: "data.xml",
swf: 'media/downloadify.swf',
downloadImage: 'images/download.png',
width: 100, height: 30});};
này mới hơn Stack Overflow câu hỏi có nhiều câu trả lời mà không cần Flash. Hầu hết liên quan đến việc xây dựng 'dữ liệu:' URL trong DOM. https://stackoverflow.com/questions/19721439/download-json-object-as-a-file-from-browser – Nelson