2011-11-18 33 views
8

Tôi đang cố gắng tạo tệp văn bản bằng JavaScript, tôi biết có thể bằng cách sử dụng đối tượng ActiveX, nhưng nó chỉ chạy tốt trên trình duyệt IE.Tạo tệp văn bản trong JavaScript

Yêu cầu của tôi là tạo tệp văn bản bằng JavaScript cho trình duyệt Safari?

Có ai có thể giúp tôi về vấn đề này không?

+0

Dude cung cấp cho chúng tôi mã của bạn để chúng tôi có thể trợ giúp ..... –

+0

xem thêm [Cách tạo, lưu tệp txt với trình duyệt chéo tương thích javascript] (http://stackoverflow.com/questions/7392117/ cach-to-create-save-a-txt-file-với-javascript-compatible-cross-browser) – harpo

Trả lời

-2

nhưng yêu cầu của tôi là để tạo ra một tập tin văn bản sử dụng javascript cho trình duyệt Safari

Đó là không thể với vani Javascript do hạn chế bảo mật. Tuy nhiên, bạn có thể sử dụng javascript phía máy chủ chẳng hạn như Node.JS hoặc Ajax hoặc một số công nghệ phía máy chủ khác.

8

Trong JavaScript u có thể sử dụng sau dòng để hỏi người dùng cho lưu một file văn bản,

window.open("data:text/json;charset=utf-8," + escape("Ur String Object goes here"));

Tôi đã thử nghiệm điều này trong một số trình duyệt phổ biến một số lần trở lại ... chỉ cần đảm bảo rằng nó hoạt động trong Safari hoặc không .. Good Luck

+0

Đã 3 năm kể từ khi câu trả lời này được đăng, nhưng mã này không hoạt động đúng trong Google Chrome. – hexicle

12

Một cách khác để thực hiện việc này là sử dụng BlobURL.createObjectURL. Tất cả các trình duyệt gần đây bao gồm Safari 6+ đều hỗ trợ chúng.

var textFile = null, 
    makeTextFile = function (text) { 
    var data = new Blob([text], {type: 'text/plain'}); 

    // If we are replacing a previously generated file we need to 
    // manually revoke the object URL to avoid memory leaks. 
    if (textFile !== null) { 
     window.URL.revokeObjectURL(textFile); 
    } 

    textFile = window.URL.createObjectURL(data); 

    // returns a URL you can use as a href 
    return textFile; 
    }; 

Dưới đây là một example có sử dụng kỹ thuật này để lưu văn bản tùy ý từ một textarea.

Một điều cần lưu ý về ví dụ này là tôi đã sử dụng download attribute trên liên kết tải xuống. Thật không may, Safari hiện không hỗ trợ nó. Tuy nhiên, trong các trình duyệt thực hiện, tệp sẽ tự động được tải xuống khi được nhấp thay vì mở tệp trong trình duyệt. Ngoài ra, vì tôi đặt thuộc tính download thành info.txt, tệp sẽ được tải xuống với tên đó thay vì tên ngẫu nhiên được tạo bởi createObjectURL.

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