2012-08-02 60 views
6

工作,我必須打印出div這是我正在做以下列方式:Window.print不能在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; 
    } 

我的問題是,在IE瀏覽器,當我按一下按鈕沒有任何反應。但是,在Chrome和Firefox上它可以正常工作。我能做些什麼來正確地打印出來?

編輯:我在下面的方式調用print

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

這是print_it是按鈕的ID。

我看到的另一件事是,經過一段時間,Chrome和其他瀏覽器一起告訴我該網頁沒有響應。這是爲什麼發生?

+0

這可能DUP:http://stackoverflow.com/questions/2555697/window-print-not-working-in-ie – mpm 2012-08-02 16:47:35

+0

難道你不能使用'mywindow.document.innerHTML'? – starbeamrainbowlabs 2012-08-02 16:50:28

+0

您的點擊事件處理程序在哪裏? – 2012-08-02 16:50:52

回答

8

你必須做一個mywindow.document.close(),你可能不必在窗口名稱

我假設你的東西的onclick調用PrintElem空間 - 如果這東西是一個鏈接,你需要在返回false onclick處理程序!

這裏是我會怎麼做,如果我不得不

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; 
} 

,但我不知道該window.close()的是否會與印刷

干擾爲什麼不

$(function() { 
    $('#print_it').click(function(){ 
    popup($('#itinerario').html()); 
    }); 
}); 
+0

它給了我錯誤var元素= $('#itinerario'); – JackTurky 2012-08-02 17:23:29

+1

解決了...問題是我用var mywindow = window.open('','a name','height = 600,width = 800');而不是var mywindow = window.open('','_blank','height = 600,width = 800');微軟只允許一些像名字一樣的參數 – JackTurky 2012-08-02 17:55:50

+2

我已經告訴過你了。沒有空間允許。我的代碼使用下劃線 – mplungjan 2012-08-02 18:42:58

1

我看到你已經使用mplungjan關於窗口名稱中沒有空格的註解來解決它,但是另一種方法是粗略地使用@media print css樣式:

<!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

因爲可見性仍佔用頁面上的空間 – mplungjan 2012-08-04 20:55:51

0

在我的情況下,這個問題是通過在打印前做一個焦點來解決的。

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

1

對我來說,我只需要使用下面的代碼:

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