Hace un tiempo creé un complemento lightbox usando jQuery que cargaría una url especificada en un enlace en un lightbox. El código es muy simple:Usando JQuery para abrir una ventana emergente e imprimir
$('.readmore').each(function(i){
$(this).popup();
});
y el vínculo se vería así:
<a class='readmore' href='view-details.php?Id=11'>TJ Kirchner</a>
El plugin también podría aceptar los argumentos de anchura, altura, una URL diferente, y más datos para pasar a través.
El problema que estoy enfrentando ahora es imprimir la caja de luz. Lo configuré para que el lightbox tenga un botón de impresión en la parte superior de la caja. Ese enlace abriría una nueva ventana e imprimiría esa ventana. Todo esto está siendo controlado por el plugin lightbox. Esto es lo que se ve que un código como:
$('.printBtn').bind('click',function() {
var url = options.url + ((options.url.indexOf('?') < 0 && options.data != "") ? '?' : '&') + options.data;
var thePopup = window.open(url, "Member Listing", "menubar=0,location=0,height=700,width=700");
thePopup.print();
});
El problema es no parece el guión estar esperando que se cargue la ventana. Quiere imprimir el momento en que aparece la ventana. Como resultado, si hago clic en "cancelar" en el cuadro de diálogo de impresión, aparecerá una y otra vez hasta que se cargue la ventana. La primera vez que intenté imprimir, obtuve una página en blanco. Eso podría ser porque la ventana no terminó de cargarse.
Necesito encontrar una manera de alterar el bloque de código anterior para esperar hasta que la ventana se cargue y luego imprima. Siento que debería haber una manera fácil de hacerlo, pero aún no lo he encontrado. O eso, o necesito encontrar una forma mejor de abrir una ventana emergente e imprimir desde el script lightbox en la ventana primaria, sin alternar el código de la página web en la ventana emergente.
Bueno, estoy tratando de hacer esto sin agregar código al archivo view-details.php porque ese archivo no debería necesitar saber que se está imprimiendo. De esa forma no tengo que agregar un snippit de código a cada archivo que cargue en el lightbox. –
¿Por qué usa window.open si lo está cargando en Lightbox? Si está utilizando jQuery para cargar el HTML a través de AJAX, puede usar la función .load() en jQuery y activar la impresión con la devolución de llamada onSuccess. –
Porque no puedo imprimir muy bien desde una caja de luz. Tengo todo este fondo negro que lo rodea. Se ve y se imprime mejor en su propia ventana. Es una idea interesante, usando .load(), pero no quiero que el contenido se imprima justo después de que se cargue lightbox. Solo cuando el usuario haga clic en el enlace de impresión, quiero que se imprima la casilla. –