2010-07-21 6 views
7

Tengo una página que llama a window.print(); al final de la página. No tengo forma de acceder al código en window.print(); Es generado por el servidor y no puedo tocarlo. Básicamente, debido a IE, necesito ejecutar un poco de javascript antes de que aparezca el cuadro de diálogo de impresión, pero después de que la página se haya cargado. No puedo hacer esto porque tan pronto como llega a window.print(); el cuadro de diálogo de impresión aparece. Todavía necesito imprimir, pero primero necesito ejecutar myFunction() y luego puedo window.print();Ejecutando la función antes de que la página llegue a window.print()

<html><head></head><body></body><!--no access from here--><script>window.print();</script></html> 

Respuesta

16

Usted debe ser capaz de anular como si fuera tan ...

var _print = window.print; 
window.print = function() { 
    alert("Hi!"); 
    // do stuff 
    _print(); 
} 
+0

Podría haber jurado que lo intenté. ¡Eso funciona perfectamente! ¡Gracias! – joe

+0

¡Awww, pásame al golpe! +1. –

+0

@joe ¡No hay problema, bienvenido a Stack Overflow! Para "aceptar" esto como la respuesta, puede hacer clic en la marca de verificación debajo de la flecha hacia abajo del voto. –

8

"Básicamente debido IE necesito ..."

Si sólo necesita soporte para IE, ver el evento onbeforeprint.

window.onbeforeprint = function() { 
    // some code  
} 

La ventaja aquí es que el código no se ejecutará en los navegadores que no soportan OnBeforePrint, que es casi todos los navegadores excepto IE.

+0

Wow eso es un nuevo ¡¡uno!! – joe

0

Trate de poner otra etiqueta <script> antes del que no tiene acceso a, por ejemplo:

<html><head></head><body></body><script>alert('Hello There !');</script><script>window.print();</script></html> 
Cuestiones relacionadas