javascript - 在调用 window.print() 之前等待 html 写入窗口

标签 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 被写入?

最佳答案

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

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

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

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

关于javascript - 在调用 window.print() 之前等待 html 写入窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39889656/

相关文章:

jquery - css() 和不透明度..遵循 fadeIn() 不起作用

Javascript 对象未将图像设置为数组

java - Rhino 中的类型错误 : migration from Java 6 to Java 7

jquery - jQuery控制的css如何平滑过渡?

jquery - 使用 Parsley.js 仅验证 ASP.net 页面上的一个表单

php - 如何使用表单输入更改 URL 的一部分?

javascript - 如何使用javascript将键码转换为字符

javascript - Jquery - Internet Explorer - 语法错误

javascript - 表单不重定向或发送电子邮件

javascript - 从方位获取像素位置