Сохранение содержимого в файл из браузера

Задача следующая: в какой-то момент нужно сохранить часть содержимого, отображаемого в браузере (например, текст или визуальное отображение дерева 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 к пользователю на компьютер.

Теги: