8

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

4

2 回答 2

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()方法总是阻塞(在我测试过的每个浏览器中),所以之后立即恢复更改是安全的。但是,如果用户选择通过菜单或工具栏进行打印,那么您就不走运了。

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

于 2011-10-04T08:04:30.227 回答
3

AFAIK没有一般的可能性。IE 具有 onbeforeprint 和 onafterprint,现在也添加到 Firefox 5/6+(我不确定)。考虑使用特定于打印的样式表

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

其他相关问题

于 2011-10-04T08:02:25.780 回答