如何在打印之前等待 HTML 文档加载/呈现(纯 JavaScript)

博科

我正在使用此代码在新的 html 页面上打开和打印图像:

printView(dataUri:string){

  var win = window.open();
  win.document.write( '<img src="' + dataUri + '">');

  win.print();
  win.close();

}

当这样使用并且图像大于几 kB 时,打印预览会打开一个空白页面,因为在调用打印时不会呈现文档。

我通过setTimeout在打印前引入约 200 毫秒的延迟解决了这个问题(暂时),如下所示:

setTimeout( () => {
     win.print();
     win.close();
}, 200);

这有效,但我知道我应该使用一些 DOM/window 事件来等待内容加载。但哪一个?

到目前为止我尝试过的:

win.document.onload = ()=>{
    console.log('event fired'); // never fired
    win.print();
    win.close();
}

win.addEventListener('load', ()=>{
    console.log('event fired'); // never fired
    win.print();
    win.close();
}

我想保留这个 Vanilla JS,所以请不要让我参考 jQuery window.ready。

伊姆蒂亚兹·乔杜里

onload为您的图像添加属性

 win.document.write( '<img src="' + dataUri + '" onload="print()">');

删除win.print()win.close()printView()

并将它们添加到另一个函数中 print()

print() 将在图像加载完成时触发。

这次希望它有效

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用纯Javascript函数呈现多个HTML部分

如何使用map函数使用javascript在html元素中呈现对象数组?纯Javascript

如何在 HTML 标记之前加载 Javascript 函数?

如何在html文档之前加载加载脚本

无法在Javascript之前加载HTML

如何抓取 JavaScript 呈现的 HTML

如何在触发窗口警报之前呈现 HTML 更改,而不在 javascript 中使用 setTimeOut?

如何从URL加载JSON并通过在HTML页面上使用纯JavaScript进行显示?

如何在JavaScript中打印呈现的HTML页面的一部分?

如何检测外部javascript是否已完成呈现其动态加载的HTML?

如何在JavaScript中加载HTML页面

如何在 HTML 中打印 javascript 值?

如何使用纯JavaScript选择<html>元素?

将JavaScript打印到HTML文档

等待 JavaScript 脚本加载到 HTML

如何将多个HTML文件加载为“文档”,然后使用Javascript操作它们?

如何在 DotNetBrowser 中打印之前等待淘汰赛页面完成加载?

如何使用 CSS 和 javascript 在打印视图上使 HTML 完美?

Jekyll正在打印HTML而不是呈现HTML

Javascript / Angular - 在呈现代码之前显示 html

离线HTML文档的Javascript

如何在纯JavaScript中在外部HTML / SVG文件中执行javascript?

如何在显示之前通过javascript / jquery删除html元素

HTML-如何加载CSS / JavaScript文件?

如何使用ajax javascript加载html文件

reactjs和呈现纯HTML

如何从AJAX加载的文档中追加HTML?

纯JavaScript替代jQuery的.html()

如何在JavaScript中将HTML文件的多个部分的打印排队?