Привет,
Я работаю над JS-приложением, которое выполняет некоторую сложную работу и записывает некоторую информацию (фактически, до сотен строк) на <div>
.
Моя цель - создать кнопку "Сохранить журнал", которая запускает диалог загрузки браузера, чтобы сохранить содержимое моего журнала <div>
.
Более кратко, это требования к этой функции:
- Конечный пользователь должен иметь полный контроль над файлом. Он/она должен иметь возможность сохранять/архивировать его для дальнейшего использования, отправлять его в отдел поддержки, чтобы получить помощь в решении какой-либо проблемы, загрузить ее обратно в приложение и т.д. Таким образом, API-интерфейс HTML5 Web Storage здесь не помогает (данные получить сохраненный в определенном браузером месте и не будет легко извлекаться, за исключением JS, который его создает).
- Приложение должно работать в автономном режиме (по крайней мере, при некоторых обстоятельствах). Это и эффективность, вот почему я отбросил идею POSTing данных на сервер, чтобы вернуть его с заголовком "Content-disposition".
- Файл должен быть помечен как
text/plain
, поэтому браузер может предлагать действия по умолчанию (например, "Открыть в блокноте" ), как при обычной загрузке файла. Это можно рассматривать как особый аспект первого требования. - Говорить пользователю о том, чтобы скопировать содержимое
<div>
в текстовый редактор и сохранить его там, безусловно, ужасно, и именно поэтому я пытаюсь избежать.
Я искал этот сайт, на сайтах WHATWG и W3C и в Интернете в целом без успеха. Это вообще возможно?
Самое близкое, что у меня есть, - это использовать data:
url. Моя первая попытка, выполняющая POST-действие, не смогла получить тип контента, поэтому он вернется к эвристике UA. Мне было немного лучше, стиля ссылку <a>
, чтобы выглядеть как кнопка и придать ей атрибут type
, но тогда UA будет играть слишком умно и отображать контент вместо сохранения (и попросить пользователя сохранить файл из браузера на этом этапе становится еще хуже, чем при использовании подхода "копировать-вставить", поскольку сохранение страниц сильно варьируется между браузерами).
Если бы был какой-то способ объединить URL-адрес data:
с подсказкой "content-disposition", все могло бы стать очень плавным.
С уважением, Herenvardo