Cross-browser Save As .txt

data-uri, execcommand, javascript, save-as

Solution

As far as I know, the only way is to use data: URLs to force a download:

var data = "This is a test";
window.location.href = "data:application/x-download;charset=utf-8," + encodeURIComponent(data);

Two catches here:

- It won't work in MSIE because its support of data: URLs is very limited (supposedly for security reasons). So you will still need Downloadify there.

- You cannot specify a file name, the suggested file name will depend on the browser used. And file type will be "unknown" (you cannot use a known MIME type because the browser won't offer to download the file then).

Bonus reading: there was a W3.org discussion in February 2010 on fixing the second problem: http://lists.w3.org/Archives/Public/uri/2010Feb/thread.html#msg58. However, this doesn't seem to have made it into any specification so far, let alone browser implementations.

Problem

Is there a JavaScript library that allows to save strings as txt files, and works cross-browser? In the past, I have been using Downloadify, but I am looking at another option for a couple reasons: - I hope to find a pure JavaScript solution, without the need for Flash - it seems that Downloadify is not updated anymore (no update in the past 18 months) - I am experiencing an issue with Downloadify in IE 9, where strings are cut off

Original source