Скопировать текущую веб-страницу в новое окно
Мне нужно иметь возможность скопировать текущую веб-страницу в новое всплывающее окно для предварительного просмотра. На странице с дочерними элементами есть сетка, поэтому, если они расширяют одну из строк, чтобы увидеть дочерние строки, мне нужно показать это в новом окне.
Возможно ли это?
В настоящее время во всплывающем окне открывается одна и та же страница, но все ни одна из строк не расширяется.
Ответы
Ответ 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 после загрузки страницы.