在新窗口中打印克隆的div

时间:2013-09-19 14:00:07

标签: javascript jquery

我使用以下代码在新窗口中打印div:

$('#PrintNews').bind('click', function () {          
        var approot = '<%=AppRoot %>';
        var printContents = new $("#divToPrint").clone();
        var myWindow = window.open("", "popup", "width=800,height=600,scrollbars=yes,resizable=yes," +
             "toolbar=no,directories=no,location=no,menubar=no,status=no,left=250px,top=80px");
         var doc = myWindow.document;

         doc.open();
         $(printContents).find("#PrintNews").remove();
         $(printContents).find("#bottom").remove();
         doc.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
         doc.write("<html>");
         doc.write("<head>");
         doc.write("<link href='" + approot + "/Themes/print.css' rel='stylesheet' type='text/css' />");
         doc.write("<link href='" + approot + "/Themes/secretaryPortal.css' rel='stylesheet' type='text/css' />");
         doc.write("</head>");
         doc.write("<body style='font: 11pt/1.2 Arial !important;'>");
         doc.write("<div class='story'>");
         doc.write($(printContents).html());
         doc.write("</div>");
         doc.write("</body>");
         doc.write("</html>");
         myWindow.document.close();
         myWindow.focus();
         myWindow.print();
         myWindow.close();           
        });

});

它确实打开了打印对话框但页面没有原始css。 如果我将最后4行更改为:

         doc.document.close();
         doc.focus();
         doc.print();
         doc.close();  

使用正确的CSS打开页面但是打开的对话框没有打开。 我收到错误Uncaught TypeError: Cannot call method 'close' of undefined

我必须在新窗口中打开它,因为我需要重新调整大小以打印对话框,我知道@media print

2 个答案:

答案 0 :(得分:1)

在您的说明中而不是:

doc.document.close();
doc.focus();
doc.print();
doc.close();  

使用:

myWindow.focus();
myWindow.print();
myWindow.close();

答案 1 :(得分:1)

这是最终解决方案:*感谢上面的Yussuf

  $('#PrintNews').bind('click', function () {          
        var approot = '<%=AppRoot %>';
        var printContents = new $("#divToPrint").clone();
        var myWindow = window.open("", "popup", "width=800,height=600,scrollbars=yes,resizable=yes," +
             "toolbar=no,directories=no,location=no,menubar=no,status=no,left=250px,top=80px");             

         $(printContents).find("#PrintNews").remove();
         $(printContents).find("#bottom").remove();
         myWindow.document.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
         myWindow.document.write("<html>");
         myWindow.document.write("<head>");
         myWindow.document.write("<link href='" + approot + "/Themes/print.css' rel='stylesheet' type='text/css' />");
         myWindow.document.write("<link href='" + approot + "/Themes/secretaryPortal.css' rel='stylesheet' type='text/css' />");
         myWindow.document.write("</head>");
         myWindow.document.write("<body style='font: 11pt/1.2 Arial !important;'>");
         myWindow.document.write("<div class='story'>");
         myWindow.document.write($(printContents).html());
         myWindow.document.write("</div>");
         myWindow.document.write("</body>");
         myWindow.document.write("</html>");
        myWindow.focus();
         myWindow.print();
        myWindow.close();
        });