浏览器js打印

简要记录如下:

调用打印机,同Ctrl+P

?
window.print();

1 打印一个较大的table时,如果table包含<thead>且table里面的内容被分页到第二页,那么第二页会自动加上<thead>,即标题部分;如果table不包含<thead>则第二页不会自动加上标题;

2 可以将页面中需要打印的部分内容读取到iframe中进行打印,可用如下jquery插件实现,并修改对应的样式文件地址:

// Create a jquery plugin that prints the given element.
jQuery.fn.print = function  () {
     // NOTE: We are trimming the jQuery collection down to the
     // first element in the collection.
     if  ( this .size() > 1) {
         this .eq(0).print();
         return ;
     } else  if  (! this .size()) {
         return ;
     }
 
     // ASSERT: At this point, we know that the current jQuery
     // collection (as defined by THIS), contains only one
     // printable element.
 
     // Create a random name for the print frame.
     var  strFrameName = ( "printer-"  + ( new  Date()).getTime());
 
     // Create an iFrame with the new name.
     var  jFrame = $( "<iframe name='"  + strFrameName + "'>" );
 
     // Hide the frame (sort of) and attach to the body.
     jFrame
         .css( "width" , "1px" )
         .css( "height" , "1px" )
         .css( "position" , "absolute" )
         .css( "left" , "-9999px" )
         .appendTo($( "body:first" ))
     ;
 
     // Get a FRAMES reference to the new frame.
     var  objFrame = window.frames[strFrameName];
 
     // Get a reference to the DOM in the new frame.
     var  objDoc = objFrame.document;
 
     // Grab all the style tags and copy to the new
     // document so that we capture look and feel of
     // the current document.
 
     // Create a temp document DIV to hold the style tags.
     // This is the only way I could find to get the style
     // tags into IE.
     var  jStyleDiv = $( "<div>" ).append(
         $( "style" ).clone()
         );
 
     // Write the HTML for the document. In this, we will
     // write out the HTML of the current element.
     objDoc.open();
     objDoc.write( "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" );
     objDoc.write( "<html>" );
     objDoc.write( "<head>" );
     objDoc.write( "<title>" );
     objDoc.write(document.title);
     objDoc.write( "</title>" );
     objDoc.write( "<link rel=\"stylesheet\" type=\"text/css\" href=\"/Style/Public-printer.css\" />" );
     objDoc.write(jStyleDiv.html());
     objDoc.write( "</head>" );
     objDoc.write( "<body>" );
     objDoc.write( "<div class='"  + this .attr( "class" ) + "'>"  + this .html() + "</div>" );
     objDoc.write( "</body>" );
     objDoc.write( "</html>" );
     objDoc.close();
 
     // Print the document.
     objFrame.focus();
     objFrame.print();
 
     // Have the frame remove itself in about a minute so that
     // we don't build up too many of these frames.
     setTimeout(
         function  () {
             jFrame.remove();
         },
         (60 * 1000)
         );
}

 注意点:如果使用上面的jquery插件打印,页面上包含input等form表单元素,这些元素不会被打印出来;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值