javascript - 如何在函数内设置延迟 - 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;
}
解决方案
加载文档内容时这样做会更好。
document.addEventListener('DOMContentLoaded', function(event) {
window.print();
});
推荐阅读
- botframework - Microsoft 团队机器人获取频道成员
- javascript - 无效的 base64 解码
- python-3.x - 当我在 python 中使用开放 CV 从图像中检测形状时,外部边框也被识别,我该怎么做才能阻止这种情况?
- postgresql - Terraform:创建角色rds_pgaudit时出错:pq:角色“rds_pgaudit”已经存在
- android - 第一次需要权限后如何在活动中设置内容
- c# - 获取应将 2 提高到哪个数字以获取 x 的函数
- php - PHP 无法在 Web 浏览器中正确呈现
- c# - ASP.NET Core 3.1 绑定到列表
(通用列表)属性不起作用 - c++ - 是否调用函数指针来生成代码未定义的行为?
- c# - 如何使用 WPF 在画布中以随机角度和方向设置椭圆