2012-08-02 14 views
6

tôi phải in ra một div mà tôi đang làm theo cách sau:Window.print không làm việc trong IE

function PrintElem(elem) 
    { 
     Popup(elem.html()); 
    } 

    function Popup(data) 
    { 
     var mywindow = window.open('', 'to print', 'height=600,width=800'); 
     mywindow.document.write('<html><head><title></title>'); 
     mywindow.document.write('<link rel="stylesheet" href="css/mycss.css" type="text/css" />'); 
     mywindow.document.write('</head><body >'); 
     mywindow.document.write(data); 
     mywindow.document.write('</body></html>'); 

     mywindow.print(); 
     mywindow.close(); 

     return true; 
    } 

Vấn đề của tôi là trên IE, khi tôi nhấp vào nút có gì xảy ra . Tuy nhiên, trên Chrome và Firefox nó hoạt động. Tôi có thể làm gì để in chính xác?

EDIT: Tôi gọi print theo cách sau:

$('#print_it').click(function(){ 
    var element = $('#itinerario'); 
    PrintElem(element); 
}); 

Đây là nơi print_it là id của các nút.

Một điều nữa tôi đã thấy là sau một khoảng thời gian, Chrome cùng với các trình duyệt khác cho tôi biết rằng trang không phản hồi. Tại sao chuyện này đang xảy ra?

+0

thể dup điều này: http://stackoverflow.com/questions/2555697/window-print-not-working-in-ie – mpm

+0

bạn không thể sử dụng 'mywindow.document.innerHTML'? – starbeamrainbowlabs

+0

Trình xử lý sự kiện nhấp chuột của bạn ở đâu? –

Trả lời

8

Bạn PHẢI làm một mywindow.document.close() và bạn có thể KHÔNG có một không gian trong tên cửa sổ

tôi giả sử bạn gọi PrintElem từ onclick của một cái gì đó - nếu có điều gì đó là một liên kết, bạn cần phải trả lại sai trong xử lý onclick!

Dưới đây là làm thế nào tôi sẽ làm điều đó nếu tôi phải

function PrintElem(elem) { 
    Popup($(elem).html()); 
} 

function Popup(data) 
{ 
    var mywindow = window.open('', 'to_print', 'height=600,width=800'); 
    var html = '<html><head><title></title>'+ 
       '<link rel="stylesheet" href="css/mycss.css" type="text/css" />'+ 
       '</head><body onload="window.focus(); window.print(); window.close()">'+ 
       data+ 
       '</body></html>'; 
    mywindow.document.write(html); 
    mywindow.document.close(); 
    return true; 
} 

nhưng tôi không chắc chắn hay không window.close() sẽ can thiệp vào việc in

Và tại sao không

+0

nó cho tôi lỗi trên phần tử var = $ ('# itinerario'); – JackTurky

+1

giải quyết ... vấn đề là tôi đã sử dụng var mywindow = window.open ('', 'a name', 'height = 600, width = 800'); thay vì var mywindow = window.open ('', '_blank', 'height = 600, width = 800'); microsoft chỉ cho phép một số đối số như tên – JackTurky

+2

Tôi đã nói với bạn điều đó. Không có không gian cho phép. Mã của tôi sử dụng dấu gạch dưới – mplungjan

1

Tôi thấy bạn đã giải quyết nó bằng cách sử dụng ghi chú của mplungjan về không có khoảng trắng trong tên cửa sổ, nhưng cách khác là sử dụng các kiểu in css @media, thô lỗ:

<!DOCTYPE html> 
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" /> 
    <title></title> 
    <style type="text/css"> 
     @media print { 
      * { 
       visibility: hidden; 
      } 

      .printMe { 
       visibility: visible; 
      } 
     } 
    </style> 
    <script type="text/javascript" src="jquery-1.4.4.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#Button1").click(function() { 
       var divToPrint = $("#div3"); 
       $(divToPrint).addClass("printMe"); 
       window.print(); 
       $(divToPrint).removeClass("printMe"); 
      } 
      ) 
     } 
     ); 
    </script> 
</head> 
<body> 
    <div id="div1">fhgjghajghhjagjdag</div> 
    <div id="div2">ytiyrtiyertuyeyiyt</div> 
    <div id="div3">We want to print this one.</div> 
    <div id="div4">vnbcxbvmzxbvc,xbv</div> 
    <div id="buttonContainer"> 
     <input id="Button1" type="button" value="button" /> 
    </div> 
</body> 
</html> 
+0

Tôi sẽ sử dụng hiển thị trên chế độ hiển thị vì mức hiển thị vẫn chiếm không gian trên trang – mplungjan

0

Trong trường hợp của tôi, sự cố này đã được giải quyết bằng cách tập trung trước khi in.

window.focus(); window.print();

1

Mở trường hợp của tôi, tôi chỉ cần sử dụng mã dưới đây:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />