在调用window.print()

时间:2016-10-06 07:08:45

标签: javascript jquery

我附加了这个javascript代码,将一些内容放入弹出窗口,然后尝试打印它:

$(".print_friendly_popup").click(function() {
    var target = $(this).data('print-target');
    var left = (screen.width/2)-(500/2);
    var top = (screen.height/2)-(500/2);
    var win = window.open("", "test", "width=500,height=500 top=" + top + ", left=" + left);

    if(target == 'review') {
        win.document.write($('#print_friendly_review').html());
    } else if(target == 'essay') {
        win.document.write($('#print_friendly_essay').html());
    }
    win.print();
    win.close();
});

问题是有时调用win.document.write需要太长时间,窗口会尝试打印一个空白屏幕。如何在打印之前等待window.document写入?

2 个答案:

答案 0 :(得分:1)

尝试

win.onload = function(e){ 
    //..... your codes 
}

答案 1 :(得分:0)

那么怎么样:创建某种“检查器”以查看窗口中是否包含内容,例如:

var checkForContent = function () {
  setTimeout(function () {
    var content = win.document.querySelector('body').innerHTML

    if (content.length) {
      win.print()
      win.close()
    } else {
      checkForContent()
    }
  }, 200)
}

这样你就可以礼貌地等待内容在打印前呈现。