Сохранение дочернего окна вместо этого сохраняет родительское окно (Javascript)

StackOverflow https://stackoverflow.com/questions/904893

Вопрос

У меня есть немного кода 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 в локальный каталог, но мы не всегда можем это сделать.Есть еще какие-нибудь идеи?Спасибо за помощь на данный момент.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top