2012-12-17 24 views
8

Tôi muốn chèn phần tử HTML này trong một số trang:Thuộc tính tải xuống của Anchor không hoạt động trên một số trang (Gmail)?

<a download="somedata.csv" 
    id="downloadLink" 
    href="data:application/csv;charset=utf-8,Col1%2CCol2%2CCol3%0AVal1%2CVal2%2CVal3%0AVal11%2CVal22%2CVal33%0AVal111%2CVal222%2CVal333" 
> 
    Click Me 
</a> 

Trong tất cả các trang, khi tôi thay đổi dom qua plugin hoặc bằng tay trong các yếu tố thanh tra, bao gồm yếu tố này để dom trang, nó hoạt động tuyệt vời!
Nhưng, nếu tôi làm như vậy trong các trang Gmail, tệp được tạo không có tên "somedata.csv" và tiện ích mở rộng bị mất "csv"!

Tôi đã thử tệp này trong tệp cục bộ, trong tệp được tải lên máy chủ cục bộ và trong nhiều trang trang web bên ngoài, nó hoạt động ngoại trừ các trang Gmail.

Tại sao nó không hoạt động trong các trang Gmail? Và làm thế nào để sửa lỗi này?

+0

Theo trang này, extenstion đi vào cuối href không nằm trong thuộc tính tải xuống: http://davidwalsh.name/download-attribute –

+0

Nhưng giá trị của href, trong trường hợp của tôi, là dữ liệu không phải là tệp. –

+0

đó cũng là vấn đề tương tự trên các trang Facebook, thuộc tính tên tệp tải xuống bị bỏ qua – user280109

Trả lời

5

Đối với những người quan tâm, tôi giải quyết nó bằng cách sử Javascript/Ajax, đây là giải pháp:

Dưới đây là các chức năng:

var downloadDataURI = function($, options) { 
    if(!options) 
     return; 
    $.isPlainObject(options) || (options = {data: options}); 
    if(!$.browser.webkit) 
     window.location = options.data; 
    options.filename || (options.filename = "download." + options.data.split(",")[0].split(";")[0].substring(5).split("/")[1]); 
    options.url || (options.url = "http://download-data-uri.appspot.com/"); 
    $('<form method="post" action="'+options.url+'" style="display:none"><input type="hidden" name="filename" value="'+options.filename+'"/><input type="hidden" name="data" value="'+options.data+'"/></form>').submit().remove(); 
} 

Và đây là làm thế nào để gọi nó là:

downloadDataURI($, {filename: "test.csv",data:"data:application/csv;charset=utf-8,Col1%2CCol2%2CCol3%0AVal1%2CVal2%2CVal3%0AVal11%2CVal22%2CVal33%0AVal111%2CVal222%2CVal333"}); 
+1

tên tệp không được vinh danh bởi cả firefox trên ubunto hoặc firefox trên win8 –

+1

Không hoạt động trong IE10. '$ .browser.webkit' không đúng, vì vậy' window.location' được thiết lập, và IE hiển thị 'Trang web không thể hiển thị'. –

2

Trong Chrome với JQuery, tôi thử phương pháp này:

var dataUri = "data:application/csv;charset=utf-8,Col1%2CCol2%2CCol3%0AVal1%2CVal2%2CVal3%0AVal11%2CVal22%2CVal33%0AVal111%2CVal222%2CVal333" 
var filename = "somedata.csv" 

$("<a download='" + filename + "' href='" + dataUri + "'></a>")[0].click(); 

Tôi đã tạo liên kết tạm thời và kích hoạt sự kiện nhấp vào nó. nhưng không chắc liệu các trình duyệt khác có hoạt động hay không.

+1

Hoạt động tuyệt vời trong Chrome. Bạn đã quản lý để tìm một giải pháp cho firefox? – Owen

+0

nối thêm vào phần nội dung giải quyết sự cố trên firefox, xem https://stackoverflow.com/questions/27814048 – Kokizzu

Các vấn đề liên quan