无法在Google Chrome中看到打印预览的原因可能是什么

时间:2014-06-16 07:41:05

标签: javascript google-chrome printing

当我尝试在" Google Chrome"中打印页面时它没有显示任何内容,但内容显示在" Mozilla Firefox"中。可能是什么原因?

以下是" javascript"我用来打印页面特定部分的代码 -

 function printItemsLevel(tableClass){
    var html="<html>";
    html+='<link rel="Stylesheet" type="text/css" href="{{ asset('css/bootstrap.css') }}"></link>';
    html+='<link rel="Stylesheet" type="text/css" href="{{ asset('css/bootstrap-theme.css') }}"></link>';
    html+= document.getElementsByClassName(tableClass)[0].innerHTML;
    html+="</html>";
    var printWin = window.open('','','left=0,top=0,width=960,height=960,toolbar=0,scrollbars=0,status =0');
    printWin.document.write(html);
    printWin.document.close();
    printWin.focus();
    printWin.print();
    printWin.close();
 }

谢谢你的到来。

1 个答案:

答案 0 :(得分:0)

我认为问题应该是window.print之后的window.close。 Chrome不等待打印完成

 setTimeout(function(){ printWin.close();}, 10000); 

而不是

printWin.close();

所以你可以通过这种方式检查浏览器是否为chrome

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

如果为true,则添加setTimeout函数,否则代码应该可以正常工作

总结

function printItemsLevel(tableClass){
    var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
    var html="<html>";
    html+='<link rel="Stylesheet" type="text/css" href="{{ asset('css/bootstrap.css') }}"></link>';
    html+='<link rel="Stylesheet" type="text/css" href="{{ asset('css/bootstrap-theme.css') }}"></link>';
    html+= document.getElementsByClassName(tableClass)[0].innerHTML;
    html+="</html>";
    var printWin = window.open('','','left=0,top=0,width=960,height=960,toolbar=0,scrollbars=0,status =0');
    printWin.document.write(html);
    printWin.document.close();
    printWin.focus();
    printWin.print();
    if(is_chrome){
      setTimeout(function(){ printWin.close();}, 10000); 
    }
    else{
     printWin.close();
    }

 }

如果它不起作用我认为它可能是innerHTML中的一个错误

如果您要插入html代码,例如&#34; <header>Test</header>&#34;它无法在所有浏览器中正常工作。尝试插入纯文本,让我知道是否有效。如果是,我建议您以这种方式使用jquery html函数

$('.tableClass').html(data);