打印页面时执行javascript

时间:2011-10-04 07:38:43

标签: javascript browser printing printing-web-page

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

2 个答案:

答案 0 :(得分:9)

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

<!-- 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()方法总是阻塞(在我测试的每个浏览器中),因此可以安全地立即恢复更改。但是,如果用户选择通过菜单或工具栏进行打印,则表示运气不佳。

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

答案 1 :(得分:3)

AFAIK没有普遍的可能性。 IE有onbeforeprint和onafterprint,现在也添加到Firefox 5/6 +(我当然不知道)。考虑使用 print 特定样式表

<link rel="stylesheet" href="print.css" type="text/css" media="print" /> 

其他相关问题