Сохранение содержимого в файл из браузера
Задача следующая: в какой-то момент нужно сохранить часть содержимого, отображаемого в браузере (например, текст или визуальное отображение дерева XML-документа) на компьютер пользователя. При этом, по каким-то причинам, нет возможности запросить у сервера файл по прямой ссылке.
JS-функция в общем виде выглядит так:
var saveFile = function(text, filename) {
// IE
if (document.documentMode) {
var blob = new Blob([text],{type: "text/xml;charset=utf-8;"});
navigator.msSaveBlob(blob, filename)
// нормальные браузеры
} else {
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/xml;charset=utf-8,' + encodeURIComponent(text));
pom.setAttribute('download', filename);
if (document.createEvent) {
var event = document.createEvent('MouseEvents');
event.initEvent('click', true, true);
pom.dispatchEvent(event);
} else {
pom.click();
}
}
}
Как видно, у IE снова свои особенности.
В параметры функции можно передавать также тип создаваемого документа и кодировку.
Результатом выполнения функции является предложение браузера сохранить файл с именем fileName к пользователю на компьютер.