Вы можете создать данные: URI с типом носителя application/octet-stream
.
function download (data, charset) {
if (!charset) {
charset = document.characterSet;
}
location.href = ["data:application/octet-stream;charset=",
charset, ",", encodeURIComponent(data)
].join("");
}
Все браузеры, кроме IE, поддерживают данные: URI.Я думаю, что IE8 может поддерживать их, но только для изображений.Для IE обходным путем может быть отправка данных на сервер (включая document.characterSet
), а затем загрузка страницы, которая имеет что-то вроде следующего заголовка:
Content-Type: application/xml; charset={document.characterSet}
Content-Disposition: attachment
Если вы хотите дать файлутоже имя, используйте Content-Disposition: attachment; filename=...
.
Кроме того, чтобы все это работало, вы должны сначала преобразовать XML в строку.