我有一个在 jQuery 模态框内的网站上弹出的文档。文档末尾有一个打印按钮,它只是在弹出框中打印文档。
我想通过 Ctrl+P 仅在 iframe 内打印文档。这需要防止打印包括背景在内的所有页面的默认行为。
这是用于打印的 jQuery 代码:
$(document).keydown(function(event) {
if ( ( (event.ctrlKey == true) || (event.metaKey == true) ) && (event.which == '80')) {
event.preventDefault();
printAssessment();
}
});
function printAssessment() {
if ($('#frameContainer').length) {
$('#lightboxFrame')[0].contentWindow.print();
}
}
我的带有 iframe 的页面的 HTML 如下:
<div id="frameContainer">
<iframe id="lightboxFrame" width="950px" scrolling="auto" height="500px">
<!DOCTYPE html>
<html>
<head>
<body> (Whole Document in a Div) </body>
...
现在,问题是当我打开模态框并按 Ctrl+P 时,如果我不滚动模态框,它会以我想要的方式打印。但是,如果我滚动模式,然后按 Ctrl+P,则会出现以下错误:
Uncaught TypeError: Cannot read property 'contentWindow' of undefined
奇怪的是,即使 iframe 打开时,它仍然发现它未定义,但只有当我滚动模态 iframe 时。如果我只是打开模式并按 Ctrl+P,它会打印得很好。