2011-10-04 21 views

Respuesta

9

No se puede, a excepción de los navegadores IE. Ningún otro navegador tiene un evento antes de imprimir. Puede, sin embargo, apuntar a una hoja de estilo específica de aplicar únicamente durante la impresión:

<!-- In head --> 
<link rel="stylesheet" type="text/css" media="print" href="print.css" /> 

Esta hoja de estilo se aplicará antes de imprimir. Esto le permite realizar cambios increíbles, como ocultar las secciones principales, mover elementos y realizar un estilo de solo impresión, como saltos de página.

Otra opción es proporcionar al usuario un botón "Imprimir esta página". Ese botón puede manejar el JavaScript, llame window.print(), y revertir los cambios:

function printMe() { 
    // perform changes 
    window.print(); 
    // revert changes 
} 

El método window.print() siempre bloques (en todos los navegadores que he probado), por lo que es seguro volver inmediatamente a los cambios después. Sin embargo, si el usuario elige imprimir a través del menú o la barra de herramientas, no tiene suerte.

Una forma en que manejé ese caso en una aplicación web compleja fue tener una hoja de estilo de impresión que ocultaba todo menos un DIV especial. Si el usuario hizo clic en imprimir, recibiría un mensaje de advertencia. Si hacían clic en el botón Imprimir, ese div se llenaría con la información correcta. No es genial, pero al menos no obtuvieron varias páginas de basura.

3

AFAIK no hay posibilidad general. IE tiene onbeforeprint y onafterprint que ahora se agregan también a Firefox 5/6 + (no estoy seguro). Considere el uso de hojas de estilo de impresión específicas

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

Otras preguntas pertinentes

Cuestiones relacionadas