2010-01-28 14 views
10

Necesito poder copiar la página web actual en una nueva ventana emergente para una vista previa de impresión. Hay una cuadrícula en la página con hijos, por lo que si expanden una de las filas para ver las filas secundarias, debo mostrar esto en la nueva ventana.Copie la página web actual en una nueva ventana

¿Esto es posible?

Actualmente tengo la ventana emergente abrir la misma página, pero no se expanden todas las filas.

Respuesta

8

Quizás esto sí el truco (en IE y Firefox, no en Opera. No sé sobre WebKit):

var yourDOCTYPE = "<!DOCTYPE html..."; // your doctype declaration 
var printPreview = window.open('about:blank', 'print_preview'); 
var printDocument = printPreview.document; 
printDocument.open(); 
printDocument.write(yourDOCTYPE+ 
      "<html>"+ 
       document.documentElement.innerHTML+ 
      "</html>"); 
printDocument.close(); 

(Nótese la diferencia entre window.open() y document.open()!)

Sin embargo, perderá todos los thingies DOM personalizados, como controladores de eventos y así sucesivamente. No obstante, podría funcionar si solo quieres copiar y pegar tu HTML.

+0

Intenté esto (con jQuery) ... pero como expandir las filas se hace de forma asíncrona, la nueva página no recoge el html. – Martin

+1

Creé un JSFiddle, que funciona al menos en Firefox: http://jsfiddle.net/boldewyn/bbPLp/ – Boldewyn

0

Codifica el estado de las filas abiertas/cerradas en un formato de cadena de consulta (como "abrir = fila1 + fila5 + fila10") y pasa esta cadena en una url a una ventana recién abierta (como "host.com/blah". html? open = fila1 + fila5 + fila10 "). En la página de destino, en la función de carga, examine el objeto de ubicación y expanda estas filas una vez más.

0

También puede usar JavaScript para acceder a la ventana emergente y llamar a funciones como "hideRow (x)". Agregaré un mejor ejemplo cuando llegue a casa (el iPod touch no es divertido para escribir el código)

0

¿Estás simplemente ocultando/mostrando tus filas con la pantalla: ninguna ;? ¿Cómo estás cargando la página emergente? Si vuelve a cargar la página, puede usar AJAX para pasar un conjunto de datos a la página de destino.

Asigne una ID única a cada fila, y para cada fila que se expanda, agregue la ID de la fila en una matriz. Pase esa matriz u objeto como un miembro de datos a través de AJAX cuando se llame a su función de vista previa de impresión, luego expanda las filas aplicables en su función de devolución de llamada en caso de éxito una vez que se cargue la página.

Cuestiones relacionadas