2011-11-18 30 views
8

Próbuję utworzyć plik tekstowy przy użyciu JavaScript, wiem, że jest to możliwe przy użyciu obiektu ActiveX, ale działa dobrze tylko w przeglądarkach IE.Utwórz plik tekstowy w JavaScript

Moim wymaganiem jest wygenerowanie pliku tekstowego z użyciem JavaScript dla przeglądarek Safari?

Czy ktoś może mi pomóc w tym zakresie?

+0

Dude podaj nam swój kod, abyśmy mogli Ci pomóc ..... –

+0

zobacz także [Jak utworzyć, zapisz plik txt za pomocą przeglądarki zgodnej ze standardem javascript] (http://stackoverflow.com/questions/7392117/ how-to-create-save-a-txt-file-with-javascript-compatible-cross-browser) – harpo

Odpowiedz

-2

ale mój wymóg jest wygenerowanie pliku tekstowego przy użyciu javascript w przeglądarce safari

nie jest to możliwe z wanilii JavaScript powodu ograniczeń bezpieczeństwa. Można jednak użyć po stronie serwera javascript, takiego jak Node.JS lub Ajax lub innej innej serwerowej.

8

W JavaScript można korzystać z następujących linii zadawania użytkownikowi do zapisywania pliku tekstowego,

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

Ja testowałem to w niektórych popularnych przeglądarek kilka razy z powrotem ... po prostu upewnić się, że działa w Safari lub nie .. Powodzenia

+0

Minęły 3 lata od opublikowania tej odpowiedzi, ale ten kod nie działał poprawnie w Google Chrome. – hexicle

12

Innym sposobem na to byłoby użycie Blob i URL.createObjectURL. Wszystkie najnowsze przeglądarki, w tym Safari 6+, obsługują je.

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; 
    }; 

Oto example który używa tej techniki, aby zapisać dowolny tekst z textarea.

Inną rzeczą, na którą należy zwrócić uwagę na przykład, jest to, że użyłem linku pobierania pliku download attribute. Niestety Safari obecnie go nie obsługuje. Jednak w przeglądarkach, które to robią, plik zostanie automatycznie pobrany po kliknięciu zamiast otwierania pliku w przeglądarce. Ponadto, ponieważ ustawiam atrybut download na info.txt, plik zostanie pobrany z tą nazwą zamiast losowej nazwy wygenerowanej przez createObjectURL.