在打印页面时,JavaScript 代码似乎会被执行。
我该如何确定当前是否正在打印页面?我进行了一些 JS 调整大小,并且需要稍微处理一下打印。
在打印页面时,JavaScript 代码似乎会被执行。
我该如何确定当前是否正在打印页面?我进行了一些 JS 调整大小,并且需要稍微处理一下打印。
除了IE浏览器以外,其他浏览器都没有before print事件。但是你可以针对打印时使用的样式表进行特定的目标设置:
<!-- In head -->
<link rel="stylesheet" type="text/css" media="print" href="print.css" />
这个样式表将在打印之前应用。这使您可以进行一些惊人的更改,包括隐藏主要部分,移动项目并执行仅针对打印的样式,如分页。
另一个选择是提供用户一个“打印此页面”按钮。该按钮可以处理您的JavaScript,调用window.print()
并撤消更改:
function printMe() {
// perform changes
window.print();
// revert changes
}
window.print()
方法在所有我测试过的浏览器中都会阻塞,因此可以安全地在之后立即恢复更改。但是,如果用户通过菜单或工具栏选择打印,则无法控制。在一个复杂的 web 应用程序中,我处理这种情况的一种方法是使用一个打印样式表,隐藏除一个特殊 DIV 外的所有内容。如果用户点击打印,则会显示警告消息。如果他们点击打印按钮,那么该 div 将被填充正确的信息。这不是很好,但至少他们没有得到几页垃圾。<link rel="stylesheet" href="print.css" type="text/css" media="print" />
其他相关问题