打印页面时执行javascript

Ger*_*ser 8 javascript browser printing printing-web-page

在打印页面时,似乎执行了javascript代码.
如果页面当前正在打印,如何确定?我做了一些js-resizing,并且必须处理有点不同的打印.

Ove*_*ous 9

你不能,除了IE浏览器.没有其他浏览器有打印前事件.但是,您可以将特定样式表定位为仅在打印时应用:

<!-- In head -->
<link rel="stylesheet" type="text/css" media="print" href="print.css" />
Run Code Online (Sandbox Code Playgroud)

此样式表将在打印前应用.这允许您执行一些惊人的更改,包括隐藏主要部分,移动项目以及执行仅打印样式,例如分页符.

另一种选择是为用户提供"打印此页"按钮.该按钮可以处理您的JavaScript,调用window.print()并还原更改:

function printMe() {
    // perform changes
    window.print();
    // revert changes
}
Run Code Online (Sandbox Code Playgroud)

window.print()方法总是阻塞(在我测试过的每个浏览器中),因此以后立即恢复更改是安全的.但是,如果用户选择通过菜单或工具栏进行打印,则表示运气不佳.

我在一个复杂的网络应用程序中处理这种情况的一种方法是使用打印样式表隐藏除了特殊DIV之外的所有内容.如果用户点击了打印,他们会收到一条警告消息.如果他们点击了打印按钮,那么该div将填充正确的信息.这不是很好,但至少他们没有得到几页垃圾.