使用jquery打印另一页

时间:2016-08-24 14:37:40

标签: javascript jquery printing

我有两个功能可以打印NSImage并打印element

page

形成任何页面我点击功能按钮打印页面

function printPage(page,redirect,dontPrint=false)
{
    if($('.printThis').length == 0)
    {
        $('body').append('<div class="printThis hide"></div>');
    }
    $('.printThis').load(page,function(){
        printContent($('.printThis'),redirect,dontPrint);
        $('.printThis').remove();
    });
}

function printContent(div_id,redirect,dontPrint=false)
{
    var DocumentContainer = div_id.html();
    var html = '<html><head>'+
                   '<link href="'+tmpl+'assets/css/print.css" rel="stylesheet" type="text/css" />'+
                   '</head><body style="background:#ffffff;">'+
                   DocumentContainer+
                   '</body></html>';
    var WindowObject = window.open("", "PrintWindow",
    "width=750,height=650,top=50,left=50,toolbars=no,scrollbars=yes,status=no,resizable=yes");
    WindowObject.document.write(html);
    WindowObject.document.close();
    WindowObject.focus();
    setTimeout( function() {
        if(!dontPrint)
        {
            WindowObject.print();
            WindowObject.close();
        }
        if(redirect)
        window.location.assign(redirect);
    }, 50 );
}

当用户点击<button class="btn btn-primary btn-xs" onclick="printPage('/myproject/prints/bill/sales/5','')">Print Bill</button> 的按钮时,会弹出first time !!!! 任何时候他再次点击该按钮它可以正常工作

你可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

要解决您的问题,您需要将其添加到要打印的HTML代码中:

<script>
    window.onload = function(){
        window.print();
    }
</script>

一旦内容全部加载并呈现,这将开始打印过程。没有更多的超时!

超出答案的范围:

不要使用弹出窗口(显示window.open的行)。很多人阻止了这些(我非常感谢那些发明了弹出窗口拦截器的人),甚至在某些设备上也没有用。

您可以做的是创建<iframe>并将内容转储给它。

像这样排序:

<a href="/myproject/prints/bill/sales/5" target="print" class="btn btn-primary btn-xs">Print Bill</button>
<iframe id="print" name="print" style="display:none;"></iframe>

点击该链接后,它将打开<iframe>内的页面。由于您正在生成<iframe>的输出,因此您可以将引用的javascript代码添加到输出中。

这将为您节省大量工作并保持尽可能兼容。更不用说容易了!

答案 1 :(得分:-2)

好的,我发现了我的问题

这是我的页面完全加载的时间,所以我将延迟增加到700它工作正常 谢谢