javascript - 打印快捷方式 (Ctrl + P) 用于在其中打印 Iframe 后窗口失去焦点
问题描述
我正在一个只包含一个 iframe 的屏幕上工作,并且在该 iframe 中有一个我需要打印的表格。我使用以下代码来做到这一点
jQuery(window).on("keyup keydown", function(e){
if(e.ctrlKey && e.keyCode == 80){
window.frames['tableToPrint'].focus();
window.frames['tableToPrint'].print();
}
});
此代码仅在第一次使用。我的意思是,我输入我的 url 以打开网页,并且其中的 iframe 会按应有的方式打开。我按 Ctrl + P 打开浏览器的打印对话框以获取 PDF 副本,如果我通过它,我会得到我想要的 PDF。在我第一次尝试之后,我得到一个空的 PDF。
从调试来看,一旦浏览器的打印窗口关闭,iframe 的焦点就会被带走,并且我之后绑定的事件不起作用。
我试过了
var iframe = $("#tableToPrint")[0];
iframe.contentWindow.focus();
我试过了
window.onafterprint = function(e) {
$('#tableToPrint').focus();
};
我可以在网上找到其他东西,但它们不起作用。它的行为就好像打印语句之后的事件不起作用,并且看起来它们丢失了并且浏览器对它来说是未知的。
非常感谢帮助
解决方案
我已经对此进行了一些试验,据我所见,似乎不可能在非窗口元素上调用 .print() ,这意味着您的代码每次执行时都应该抛出以下错误:
未捕获的类型错误:window.frames.tableToPrint.print 不是函数
从我所见,打印时焦点也不重要......
所以我的问题是:您是否尝试过在没有运行任何 JQuery / JS 代码的情况下进行打印?它本身是否真的已经提供了你想要的东西?
另请参阅https://developer.mozilla.org/en-US/docs/Web/API/Window/frames以获取有关 window.frames 属性的更多信息。
(我的下一个回复将在大约 16 小时内)
推荐阅读
- arrays - 在handlebars.js 上,如何在父级使用#first?
- python - 优化多边形搜索
- javascript - 将 sweetalert2 与 node.js 和 express.js 一起使用
- python - Python - 脚本挂在 open() 函数上
- safari - iOS 12 Safari 自动滚动以自动填充密码
- sql-server - 如何在 SQL Server 中查找特定 plan_handle 或 sql_hash 的所有会话
- css - 无法使用 rmarkdown::render() 将图形放大到 fig.height=12、fig.width=10 到 html
- python - FeatureTools:处理多对多关系
- html - Angular - 为什么不能正常提供 HTML 和 CSS 页面?
- asp.net - ASP.NET 登录以授予对特定类型人群的访问权限