Сохранение дочернего окна сохраняет вместо него родительское окно (Javascript) - PullRequest
1 голос
/ 25 мая 2009

У меня есть немного кода Javascript, который создает «дружественную для сохранения» версию веб-страницы.

child = window.open("","child");<br> child.document.write(htmlPage);

"htmlPage" - это базовый HTML-код страницы со всеми удаленными ссылками на JavaScript, другим набором ссылок на изображения заголовков и т. Д.

Все прекрасно отображается во всплывающем окне, без запуска JavaScript. Когда я нажимаю «Файл-> Сохранить как», сохраненный файл становится родительским окном, вместе со всем его javascript и без следов дочернего окна. кто-нибудь знает, как решить эту проблему? Я хочу сохранить только дочернее окно.

Спасибо, -Kraryal

Ответы [ 4 ]

5 голосов
/ 18 июня 2009

У меня была похожая ситуация (но я совсем не хотел сдаваться). Я создаю дружественную для сохранения версию веб-страницы с использованием 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 text / plain:

//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: URI, и имеет ряд ограничений на то, где его можно использовать. Для IE вы можете посмотреть execCommand .

Благодаря этому tek-tip thread и статье Википедии о схеме URI данных .

2 голосов
/ 25 мая 2009

Когда вы сохраняете страницу, она сохраняет исходный URL-адрес (например, как если бы вы загрузили свежую копию)

Если вы хотите «очищенную» версию, вам нужно сгенерировать эту версию на сервере и открыть всплывающее окно с этим URL в качестве первого параметра.

1 голос
/ 25 мая 2009

для версии для Windows / IE см. Здесь: http://p2p.wrox.com/javascript-how/3193-how-do-you-save-html-page-your-local-hd.html

Я знаю, ужасно, но на всякий случай это как интранет только для IE ....

0 голосов
/ 25 мая 2009

Увы, похоже, у меня недостаточно репутации, чтобы добавлять комментарии к моему вопросу, поэтому я добавлю это сюда.

Этот javascript развернут как для Internet Explorer, так и для Safari. Хостинговое приложение не всегда имеет доступ к локальной файловой системе.

Пользователи могут разметить страницу, с которой они работают, а затем сохранить ее для последующей печати или отправки по электронной почте. Мы говорим им сохранить его в виде одного файла, чтобы он мог быть действительно почтовым. Диалоговое окно сохранения может сделать это, и пользователь может поместить файл туда, где у него есть доступ t, поэтому мы использовали его.

Кажется, простым способом было бы написать новый html из javascript в локальный каталог, но мы не всегда можем это сделать. Есть еще идеи? Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...