2010-09-18 9 views
7

Tengo un botón de impresión con id="print_req". Escribí un código JavaScript para imprimir una página, que se activa al hacer clic en este botón, y también quiero ocultar este botón antes de imprimir y mostrarlo después de todo el proceso de impresión. Me refiero a no imprimir el botón en mi documento impreso. Aquí está mi código:¿Cómo puedo ocultar el botón antes de imprimir y mostrarlo cuando se ha completado el proceso de impresión?

$(document).ready(function(){ 
    $("#print_req").click(function(){ 
     $("#print_req").css("display","none"); 
     window.print(); 
    }); 

    $("#print_req").css("display","block"); 
    return false; 
}); 

Este correctamente ocultar ese botón, pero cuando el proceso de impresión conseguir hecho, el botón no se mostrará de nuevo! ¿Cuál es el problema?

+0

reconsiderar su respuesta, ya que hay una mejor manera de hacerlo. Usar una imagen de fondo no es una buena solución. – epascarello

Respuesta

18

Usted va en este error. No deberías mostrar y ocultar el botón con JavaScript o usar una imagen de fondo para hacerlo. Debería utilizar una hoja de estilo de impresión que le permitirá aplicar diferentes estilos a la página cuando se imprima. En su caso, configuraría la pantalla como ninguna [o la visibilidad como oculta] en esta hoja de estilo.

Así que añadir una hoja de estilo con el tipo de papel para la impresión

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

En ese print.css, se oculta el botón

.printButtonClass{ display : none } 

Y listo, el botón se esconde cuando se imprime sin JavaScript.

+0

su derecho, pero imprimo un div que está en una página que ese botón existe! Quiero decir que cada estilo en el cuadro de impresión afectará el botón en el tiempo de carga!por ejemplo: si hago tu sugerencia, ¡ocultará el botón en un momento temprano! –

+0

y también no quiero hacer un trabajo tan complejo para hacer esto simple. Pero gracias amigo –

+0

Esto no ocultará el botón hasta que la página se imprima o se muestre en la vista previa de impresión. Solo afecta el estilo del botón en el que pones una clase. No afectará la página de todos modos. Su solución de establecerlo en la imagen también agrega más problemas con la accesibilidad y ¿qué ocurre si el usuario tiene imágenes inhabilitadas? ¿Sabrán imprimir con ese botón? De todos modos, creo que el botón de impresión es tonto ya que hay uno integrado en mi navegador. – epascarello

3

El problema es que no puede saber cuándo la impresión ha finalizado usando javascript. No hay evento que se active para notificar esto.

Por razones de seguridad, javascript se ejecuta en un entorno de espacio aislado dentro del navegador que limita su acceso a los recursos del sistema.

+0

Entonces, ¿cómo puedo hacer esto? –

+0

No se puede usar javascript puro. Hay controles ActiveX que permiten administrar la impresión, pero solo funcionan en IE y el usuario debe expl icitly acepta instalarlos. –

+0

oh !! ¡encontré mi propia respuesta! si pongo la imagen de este botón como fondo de la etiqueta html, ¡no se enviará a la impresora automáticamente! :) –

2

Es fácil, solo use esto, aplique la clase noprint a su botón.

@media print { 
    .noprint{ 
     display: none !important; 
    } 
} 
0
function printFunction() { 

var restoreoriginalpage = document.body.innerHTML; 
$('#print-button').css('visibility', 'hidden'); //hiding print button before it prints 
var printcontent = document.getElementById("content").innerHTML; 
document.body.innerHTML = printcontent; 
window.print();      
document.body.innerHTML = restoreoriginalpage; //restore original page   
} 
0

Basta con hacer esto ...

$ (document) ready (function() {

$('#print').on('click',function(){ 
    $('#print').hide(); 
    window.print(); 
    $('#print').show(); 

    }); 
}); 
Cuestiones relacionadas