我正在使用此代码在新的 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] 删除。
我来说两句