我正在一个仅包含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语句后的事件不起作用,看起来好像丢失了,浏览器也不知道。
非常感谢您的帮助
答案 0 :(得分:0)
我已经对此进行了一些试验,从我所看到的来看,似乎不可能在非窗口元素上调用.print(),这意味着您的代码每次都应该抛出以下错误它执行:
未捕获的TypeError:window.frames.tableToPrint.print不是函数
据我所见,打印时焦点也不重要...
所以我对您的问题是:您是否尝试过在不运行任何JQuery / JS代码的情况下进行打印?本身是否已经提供了您想要的东西?
有关window.frames属性的更多信息,另请参见https://developer.mozilla.org/en-US/docs/Web/API/Window/frames。
(我的下一个回复将在16个小时内出现)