Скопировать текущую веб-страницу в новое окно

Мне нужно иметь возможность скопировать текущую веб-страницу в новое всплывающее окно для предварительного просмотра. На странице с дочерними элементами есть сетка, поэтому, если они расширяют одну из строк, чтобы увидеть дочерние строки, мне нужно показать это в новом окне.

Возможно ли это?

В настоящее время во всплывающем окне открывается одна и та же страница, но все ни одна из строк не расширяется.

Ответ 1

Возможно, это трюк (в IE и Firefox, а не в Opera. Не знаю о WebKit):

var yourDOCTYPE = "<!DOCTYPE html..."; // your doctype declaration
var printPreview = window.open('about:blank', 'print_preview');
var printDocument = printPreview.document;
printDocument.open();
printDocument.write(yourDOCTYPE+
           "<html>"+
               document.documentElement.innerHTML+
           "</html>");
printDocument.close();

(Обратите внимание на разницу между window.open() и document.open()!)

Однако вы потеряете все пользовательские объекты DOM, такие как обработчики событий и т.д. Тем не менее, это может сработать, если вы просто хотите скопировать 'n вставьте свой HTML.

Ответ 2

Кодировать состояние открытых/закрытых строк в формате строки запроса (например, "open = row1 + row5 + row10" ) и передавать эту строку в URL-адресе в только что открытое окно (например, "host.com/blah.html"? разомкнут = row1 + row5 + row10"). На целевой странице в функции onload проверьте объект местоположения и снова разберите эти строки.

Ответ 3

Вы также можете использовать JavaScript для доступа к всплывающему окну и вызовам таких функций, как "hideRow (x)". Я добавлю лучший пример, когда вернусь домой (iPod touch не забавно набирать код)

Ответ 4

Вы просто скрываете/показываете свои строки с дисплеем: none;? Как вы загружаете всплывающее окно? Если вы повторно загрузите страницу, вы можете использовать AJAX для передачи набора данных на целевую страницу.

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