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

时间:2019-03-11 14:47:43

标签: javascript jquery html iframe browser

我正在一个仅包含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语句后的事件不起作用,看起来好像丢失了,浏览器也不知道。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我已经对此进行了一些试验,从我所看到的来看,似乎不可能在非窗口元素上调用.print(),这意味着您的代码每次都应该抛出以下错误它执行:

  

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

据我所见,打印时焦点也不重要...

所以我对您的问题是:您是否尝试过在不运行任何JQuery / JS代码的情况下进行打印?本身是否已经提供了您想要的东西?

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

(我的下一个回复将在16个小时内出现)