Сохранение дочернего окна вместо этого сохраняет родительское окно (Javascript)
-
05-09-2019 - |
Вопрос
У меня есть немного кода Javascript, который создает версию веб-страницы, "удобную для сохранения".
child = window.open("","child");
child.document.write(htmlPage);
"HtmlPage" - это базовый HTML-код страницы со всеми удаленными ссылками на javascript, другим набором ссылок на изображения заголовков и т.д.
Все отлично отображается во всплывающем окне, без запуска javascript.Когда я нажимаю "Файл-> Сохранить как", сохраненный файл является родительским окном вместе со всем его javascript и без каких-либо следов дочернего окна.Кто-нибудь знает, как решить эту проблему?Я хочу сохранить только дочернее окно.
Спасибо, -Крарял
Решение
Когда вы сохраните страницу, она сохранит исходное содержимое URL-адреса (напримертак же, как если бы вы скачали свежую копию)
Если вам нужна "очищенная" версия, вам нужно будет сгенерировать эту версию на сервере и открыть всплывающее окно с этим URL в качестве первого параметра.
Другие советы
У меня была похожая ситуация (но я не был готов полностью сдаваться).Я создаю версию веб-страницы, удобную для сохранения, используя Javascript, которую я хочу, чтобы пользователь загружал в виде текстового файла (в моем случае значения, разделенные запятыми).Я думаю, что data:
Здесь могут помочь URI.
//construct the csvOutput in Javascript first
var popup = window.open("data:application/octet-stream," + encodeURIComponent(csvOutput), "child");
//no need to document.write() anything in the child window
В Firefox это даже не всплывающее окно, просто спрашивает пользователя, хочет ли он сохранить файл, и сохраняет его как файл .part.Не совсем идеально, но, по крайней мере, это сохраняет файл без появления ненужного окна.
В качестве альтернативы мы можем использовать текстовый / обычный MIME-тип:
//construct the csvOutput in Javascript first
var popup = window.open("data:text/plain;charset=utf-8," + encodeURIComponent(csvOutput), "child");
В Firefox это всплывающее окно открывает новое окно, но затем оно сохраняется по умолчанию как текст в формате ASCII, без каких-либо изменений родительского окна или переноса строк.Вероятно, это то, что я буду использовать.
Однако, похоже, что в IE это не сработает.IE 8 - это единственная версия, которая поддерживает data:
URIs, и у него есть ряд ограничений о том, где это может быть использовано.Для IE вы могли бы посмотреть на Исполнительная команда.
Благодаря этому резьба с тек-наконечником и тот Статья в Википедии о схеме URI данных.
версию только для Windows / IE смотрите здесь: http://p2p.wrox.com/javascript-how/3193-how-do-you-save-html-page-your-local-hd.html
Я знаю, ужасно, но на всякий случай это похоже на интрасеть только для IE....
Увы, похоже, у меня недостаточно репутации, чтобы добавлять комментарии к моему вопросу, поэтому я добавлю это здесь.
Этот javascript развернут как для Internet Explorer, так и для Safari.Хостинговое приложение не всегда имеет доступ к локальной файловой системе.
Пользователи могут пометить страницу, с которой они работают, а затем сохранить ее для последующей печати или отправки по электронной почте.Мы говорим им сохранить это в виде архива из одного файла, чтобы это действительно могла быть почта.Диалоговое окно сохранения может это сделать, и пользователь может поместить файл туда, где у него есть доступ t, вот почему мы его использовали.
Кажется, самым простым способом было бы записать новый html-код из javascript в локальный каталог, но мы не всегда можем это сделать.Есть еще какие-нибудь идеи?Спасибо за помощь на данный момент.