2009-05-24 5 views
1

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

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

«HTMLPage» является основным HTML страницы со всем яваскриптом ссылки вынутой, другим набор заголовков изображений ссылок и т.д.

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

Спасибо, -Kraryal

ответ

2

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

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

0

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

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

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

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

+0

fyi - вы должны быть в состоянии отредактировать свой вопрос ... – garrow

+0

Спасибо. В тот день мой браузер был просто тупой. – kraryal

5

У меня была подобная ситуация (но я не хотел вообще сдаваться). Я создаю безопасную версию веб-страницы с использованием 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 - единственная версия, которая поддерживает URI data:, и она имеет series of restrictions, где она может быть использована. Для IE вы можете посмотреть execCommand.

Благодаря этому tek-tip thread и Wikipedia article on the data URI scheme.

+0

Это не будет делать то, что я хочу, но это хорошая находка, тем не менее. (Я хочу сохранить кучу изображений и html в виде одного архивного файла.) ExecCommand также выглядит весьма полезным. – kraryal

Смежные вопросы