40

I have a web page with a DIV element in it. When a user clicks "print", I want to print the contents of that div. Please note, I only want to print the contents of the DIV, not the entire page. To attempt this, I decided I would open a new window using JavaScript. I was then going to write the contents of the DIV into the new window. My question is, is this possible with JQuery? If so, how? Currently, I'm trying the following:

function printClick() {
  var w = window.open();
  var html = $("#divToPrintID").html();

  // how do I write the html to the new window with JQuery?
}
teedyay
  • 23,293
  • 19
  • 66
  • 73
user462166
  • 4,055
  • 3
  • 18
  • 18
  • Here's a similar thread: http://stackoverflow.com/questions/1225558/jquery-new-window-with-content-from-modal-content-on-opener-page – orolo Oct 01 '10 at 16:29

4 Answers4

53

You can use

$(w.document.body).html(html);

See this example

Steve Greatrex
  • 15,789
  • 5
  • 59
  • 73
5

Try -

var w = window.open();
var html = $("#divToPrintID").html();
w.document.writeln(html);

Reference - http://www.javascripter.net/faq/writingt.htm

Alpesh
  • 5,307
  • 2
  • 19
  • 19
4

file1:

function find(input){
    return $(input);
}

function printClick() {
  var w = window.open();
  var html = $("#divToPrintID").html();

  // how do I write the html to the new window with JQuery?
}

and in the second file do that:

var html = window.opener.find("#divToPrintID").html();
ITroubs
  • 11,094
  • 4
  • 27
  • 25
2

I found a pretty perfect match of a tutorial for exactly that.. http://www.bennadel.com/blog/1591-Ask-Ben-Print-Part-Of-A-Web-Page-With-jQuery.htm

Additionally, you can attact print-only CSS to the page that has everything but what you want turned off.

FatherStorm
  • 7,133
  • 1
  • 21
  • 27