最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Copy Current Webpage Into a New Window - Stack Overflow

programmeradmin2浏览0评论

I need to be able to copy the current webpage into a new popup window for a print preview. There is a grid on the page with children, so if they expand one of the rows to see the child rows, I need to show this in the new window.

Is this possible?

I currently have the popup window open up the same page, but all none of the rows are expanded.

I need to be able to copy the current webpage into a new popup window for a print preview. There is a grid on the page with children, so if they expand one of the rows to see the child rows, I need to show this in the new window.

Is this possible?

I currently have the popup window open up the same page, but all none of the rows are expanded.

Share Improve this question asked Jan 28, 2010 at 14:25 MartinMartin 11k8 gold badges51 silver badges77 bronze badges
Add a comment  | 

4 Answers 4

Reset to default 9

Perhaps this does the trick (in IE and Firefox, not in Opera. Don't know about 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();

(Note the difference between window.open() and document.open()!)

However, you will lose all custom DOM thingies, like event handlers and so on. Nonetheless, it might work if you just want to copy 'n paste your HTML.

Encode the state of open/closed rows into a query string format (like "open=row1+row5+row10") and pass this string in an url to a newly opened window (like "host.com/blah.html?open=row1+row5+row10"). On the target page, in the onload function examine the location object and expand these rows once again.

You can also use JavaScript to access the pop-up window and call functions like "hideRow(x)". I'll add a better example when I get home (iPod touch is no fun to type code on)

Are you just hiding/showing your rows with display:none;? How are you loading up the popup page? If you're reloading the page again, you could use AJAX to pass a dataset to the target page.

Assign a unique ID to each row, and for each row that is expanded, add the row's ID into an array. Pass that array or object as a data member via AJAX when your print preview function is called, then expand the applicable rows in your onsuccess callback function after the page is loaded.

发布评论

评论列表(0)

  1. 暂无评论