首页 > 解决方案 > 如何在函数内设置延迟 - setTimeout 的问题

问题描述

我制作了一个函数来打印 innerHTML 及其样式表div

我在这里遇到了一个小问题,因为 div 需要加载一些外部字体文件,window.print()需要一点延迟,以便在执行之前等待字体文件完全加载。

于是我setTimeout()为了延迟print()几秒使用了,但是好像不起作用,当函数执行时,浏览器的打印页面仍然立即加载。有没有办法改进这段代码?

function printdiv() {
  var headstr = "<html><head><title>file_name</title></head><body>";
  var footstr = "</body></html>";
  var newstrstyle = document.getElementsByTagName("style")[0].innerHTML;
  var newstr = document.getElementById("divID").innerHTML;
  var oldstr = document.body.innerHTML;
  document.body.innerHTML =
    headstr + "<style>" + newstrstyle + "</style>" +"<div id='divID'>" + newstr + "</div>" + footstr;
  setTimeout(window.print(), 2000); // is this right?
  document.body.innerHTML = oldstr;
  return false;
}

标签: javascripthtml

解决方案


加载文档内容时这样做会更好。

document.addEventListener('DOMContentLoaded', function(event) {
    window.print();
});

推荐阅读