使用动态加载的内容调用window.print()?

时间:2015-08-06 15:29:51

标签: javascript jquery html

我有单独的页面,可以在加载时打印其内容。

我现在想要创建一个新页面,在加载时它会打印其他2个可打印页面的内容(2个bol副本,1个ps副本)。

体:

<body>
    <div class="bol"></div> 
    <br />
    <div class="bol"></div>
    <br />
    <div class="ps"></div>
</body>

这个jQuery成功地将其他页面的内容加载到它们各自的div中:

$(document).ready(function () {
    $('.bol').load('bolPrint.aspx');
    $('.ps').load('psPrint.aspx');
});

如果我将其保留,然后点击File -> Printctrl + p,则打印窗口会显示3个单独的页面,并且完美无缺。 working_example 但是,我希望此打印窗口显示在初始页面加载上。

当我添加window.print()时:

$(document).ready(function () {
    $('.bol').load('bolPrint.aspx');
    $('.ps').load('psPrint.aspx');
    window.print();
});

<body onload='window.print()'>

打印预览不包含任何动态加载的内容。它只是一个带有标题信息的空白页面。 broken_example

1 个答案:

答案 0 :(得分:3)

您需要等待div加载。这里我在成功加载bol后加载ps并在成功加载ps后打印:

$(document).ready(function () {
  var cnt = $('.bol').length-1;
  $('.bol').load('bolPrint.aspx',function() {
    if (cnt==0) {
      $('.ps').load('psPrint.aspx',function() {
        window.print();
      });
    }
    cnt--;
  });
});