我尝试在javascript中创建打印功能,它会创建一个iframe,设置源并等待dom准备好打印iframe的内容,但它无法正常工作。
这是我的功能:
app.addReportPrintButtons = function (parentElement) {
var parent = parentElement || "body";
$(parent).on("click", ".print-report", function (e) {
var url = $(this).attr('href');
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", url);
iframe.onload = function (e) {
var win = iframe.contentWindow || iframe;
win.focus();
win.print();
};
e.preventDefault();
});
};
我可以在动态创建的iframe中打印页面吗?或者iframe是否需要附加到DOM?
答案 0 :(得分:0)
Javascript无法直接打印。它只能触发浏览器的打印功能。因此,如果您的元素不在DOM中,则无法打印。在上面的代码中,iframe不会打印,因为它在插入DOM之前不会在技术上加载。
我建议使用CSS隐藏iframe:
iframe {
display: none;
}
将它放在常规屏幕样式表中。然后在打印样式表中显示iframe:
iframe {
display: block;
}