【发布时间】:2020-10-23 13:20:44
【问题描述】:
我通过将页面的选定部分放在一个空的 iframe 中来打印它们。一切都很好,除了 CSS。有时它在那里,有时不在那里,所以我猜在大多数情况下打印功能是在 css 完成之前加载的。不幸的是,我显然无法解决这个问题。基本代码:
var pStyles = new String ("<link href='/css/print.css' rel='stylesheet' type='text/css' id='cssprint' />");
var pWrapIn = new String ("<main><article><section>");
var pWrapOut = new String ("</section></article></main>");
function printFrame(fId) {
window.frames["printhelper"].document.body.innerHTML = pStyles + pWrapIn + document.getElementById(fId).innerHTML + pWrapOut;
console.log(window.frames["printhelper"].document.body.innerHTML);
window.frames["printhelper"].window.focus();
window.frames["printhelper"].window.print();
}
这可行,但存在所描述的 CSS 问题。为了确保 CSS 已加载,我最终使用了修改后的函数,但它根本不起作用:
function printFrame(fId) {
window.frames["printhelper"].document.body.innerHTML = pStyles + pWrapIn + document.getElementById(fId).innerHTML + pWrapOut;
console.log(window.frames["printhelper"].document.body.innerHTML);
$(#cssprint).on('load', function() {
console.log ('CSS loaded');
window.frames["printhelper"].window.focus();
window.frames["printhelper"].window.print();
}, 0);
}
#cssprint 似乎永远不会加载,因此 console.log 保持为空并且没有完成打印。但是我做错了什么? (函数 printFrame 由 HTML 标记中的简单 onClick 调用。)
【问题讨论】:
标签: javascript jquery