我正在一个只包含iframe的屏幕上,在iframe中有一个我需要打印的表格。我使用以下代码来做到这一点
jQuery(window).on("keyup keydown", function(e){
if(e.ctrlKey && e.keyCode == 80){
window.frames['tableToPrint'].focus();
window.frames['tableToPrint'].print();
}
});
此代码仅在第一时间运行。我的意思是,我输入了打开网页的网址,其中的iframe就像应该打开一样。我按下Ctrl + P打开浏览器的打印对话框以获取PDF副本,如果我使用它,我会得到我想要的PDF。在我第一次尝试之后,我得到一个空的PDF。
从调试开始看起来就像浏览器的打印窗口关闭后,iframe的焦点被取消,之后我绑定的事件无法正常工作。
我试过了
var iframe = $("#tableToPrint")[0];
iframe.contentWindow.focus();
我试过了
window.onafterprint = function(e) {
$('#tableToPrint').focus();
};
我可以在网上找到的其他东西,但它们不起作用。它的行为就像print语句之后的事件不起作用,看起来它们会丢失并且浏览器不为它所知。
非常感谢帮助
我一直在试验这个,从我所看到的,似乎不可能在非窗口元素上调用.print(),这意味着你的代码每次执行时都应抛出以下错误:
未捕获的TypeError:window.frames.tableToPrint.print不是函数
从我所看到的情况来看,焦点无论是印刷时都无关紧要......
所以我的问题是:你是否尝试过在没有运行任何JQuery / JS代码的情况下进行打印?这实际上是否已经提供了你想要的东西?
有关window.frames属性的更多信息,另请参阅https://developer.mozilla.org/en-US/docs/Web/API/Window/frames。
(我的下一个回复将在大约16个小时内)