Chrome:不打印javascript内容

时间:2012-05-22 20:17:42

标签: jquery google-chrome printing greasemonkey tampermonkey

(这是通过Grease / Tampermonkey)。

以下是使用Chrome测试版浏览器的自助服务终端的打印功能:

$("#autoCheckOrder button").click ( function () {
    var newWin      = window.open (""); 
    newWin.document.write ( "<!DOCTYPE html>" );
    newWin.document.write( "<html>" );
    newWin.document.write( "<head>" );
    newWin.document.write( "<title>" );
    newWin.document.write( "</title>" );
    newWin.document.write( "<style>" );
    newWin.document.write( "@media print { " );
    newWin.document.write( "body { " );
    newWin.document.write( "background-color: white;" );
    newWin.document.write( "width: 55mm;" );
    newWin.document.write( "position: absolute;" );
    newWin.document.write( "top: 0;" );
    newWin.document.write( "left: 0;" );
    newWin.document.write( "padding: 0px;" );
    newWin.document.write( "font-size: 14px;" );
    newWin.document.write( "line-height: 18px;" );
    newWin.document.write( "}" );
    newWin.document.write( "}" );
    newWin.document.write( "</style>" );
    newWin.document.write( "</head>" );
    newWin.document.write( "<body>" );
    newWin.document.write ( loanHTML ); 
    newWin.document.write( "</body>" );
    newWin.document.write( "</html>" );
    if(newWin.print()) {
        newWin.close();
    } else {
        newWin.close();
    }
});

它从列出所有项目的页面抓取一个表格,然后创建一个 '收据'。然后打印收据。这完美地工作了一段时间,现在它只打印第一个项目。

我尝试了以下内容,绝对没有结果:

  • 使用page-break-after:始终
  • 使用上述CSS规则将收据放入div中
  • 重新安装打印机
  • 打印机的纸张缩小设置

疯狂的是,它曾用于完美地打印所有物品,现在却没有。我甚至从备份中重新安装了脚本,以确保。

不知道从哪里开始。所有内容都显示在打印预览中,但只打印第一个项目。 “页眉和页脚”设置只会让事情变得更糟,而不是更好。

更新

我更改了发送到打印机的HTML,但它确实有效。仍然不确定它是否完全有效,但它正在打印。如果它停止打印,我会知道要解决什么问题。感谢您的投入!

1 个答案:

答案 0 :(得分:1)

我能看到的唯一可信的解释是你的loanHTML变量是空的或未定义的。

演示:http://jsfiddle.net/waitinforatrain/bMzUt/2/

注释掉var loanHTML行并再次运行,你会看到我的意思。