打印快捷方式(Ctrl + P)用于在其中打印Iframe后,窗口失去焦点

问题描述 投票:1回答:1

我正在一个只包含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语句之后的事件不起作用,看起来它们会丢失并且浏览器不为它所知。

非常感谢帮助

javascript jquery html iframe browser
1个回答
0
投票

我一直在试验这个,从我所看到的,似乎不可能在非窗口元素上调用.print(),这意味着你的代码每次执行时都应抛出以下错误:

未捕获的TypeError:window.frames.tableToPrint.print不是函数

从我所看到的情况来看,焦点无论是印刷时都无关紧要......

所以我的问题是:你是否尝试过在没有运行任何JQuery / JS代码的情况下进行打印?这实际上是否已经提供了你想要的东西?

有关window.frames属性的更多信息,另请参阅https://developer.mozilla.org/en-US/docs/Web/API/Window/frames

(我的下一个回复将在大约16个小时内)

© www.soinside.com 2019 - 2024. All rights reserved.