M J
M J

Reputation: 2991

How to print a HTML Data which is in a String

I have a Print button in my Project. I am using JavaScript to print the data. I have a variable as data_to_print which contains the HTML which is to be print. The problem is that when i hit the print button the print dialog window of windows does not open. I am not able to find whats the problem, can any one help me. Below is my Code:

function print_all()
{ 
var xx='<html>
    <head>
        <style>...</style>
    </head>
    <body>
        <center>
            <div>
                <table><thead>
                     <tr>
                        <th>Id</th>
                        <th>Name</th>
                        <th>Address</th>
                        <th>DOB</th>
                     </tr><thead>
                     <tr>
                        <td>1</td>
                        <td>John</td>
                        <td>Mumbai</td>
                        <td>15 August</td>
                     </tr>
                     <tr>
                        <td>2</td>
                        <td>John2</td>
                        <td>Mumbai2</td>
                        <td>18 August</td>
                     </tr>
                 </table>
            </div>
        </center>
    </body>
<html>';



var content_vlue = xx;
content_vlue=content_vlue.replace("[Print]", "");
var docprint=window.open("","","");
docprint.document.open();
docprint.document.write('<html><head>');
docprint.document.write('<style> .table{border-collapse:collapse;}.table tr 
th{border:1px solid #000!important;color:#000;}.table tr th  
a{color:#000!important;}.table tr td{border:1px solid #000!important;}</style>');
docprint.document.write('</head><body><center>');
docprint.document.write('<div align="left">');
docprint.document.write(content_vlue);
docprint.document.write('</div>');
docprint.document.write('</center></body></html>');
docprint.document.close();
docprint.focus();
}

Upvotes: 0

Views: 208

Answers (1)

Reporter
Reporter

Reputation: 3948

The reason for your trouble is quit simple. You forgot to add the method .print();.

When I understand your right, then do following:

function print_all()
{
  ...
  docprint.document.close();
  docprint.focus();
  //This line was missing
  doc.print();
}

Addationaly two advices:

First:

As steo wrote, if you want to print long string in Javascript, concatinate it with the plus sign. The browsers don't accept line breaks within strings.

Second:

When I used your definition for the link <a title="Print" onClick="print_all();" class="no-bord btnlite" target="_blank">print</a> it did open the opener page also in a new tab. Another effect ourccur when I opend the site in IE. The effect: he didn't marked this line as clickable link.

To solve these, use this line <a title="Print" href="#" onClick="print_all();return false;" class="no-bord btnlite" target="_blank">print</a> .

Upvotes: 1

Related Questions