2011-10-04 100 views

回答

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将填充正确的信息。这不是很好,但至少他们没有得到几页垃圾。