2010-01-28 9 views
10

Devo essere in grado di copiare la pagina Web corrente in una nuova finestra popup per un'anteprima di stampa. C'è una griglia sulla pagina con i bambini, quindi se espandono una delle file per vedere le righe figlio, ho bisogno di mostrarlo nella nuova finestra.Copia la pagina Web corrente in una nuova finestra

È possibile?

Attualmente ho la finestra popup aperta sulla stessa pagina, ma tutte le righe non sono state espanse.

risposta

8

Forse questo è il trucco (in IE e Firefox, non in Opera. Non so su 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(); 

(notare la differenza tra window.open() e document.open()!)

Tuttavia, si perderanno tutti thingies DOM personalizzati, come i gestori di eventi e così via. Tuttavia, potrebbe funzionare se si desidera copiare e incollare il codice HTML.

+0

Ho provato questo (con jQuery) ... ma poiché l'espansione delle righe viene eseguita in modo asincrono, la nuova pagina non sta rilevando l'html. – Martin

+1

Ho creato un JSFiddle, che funziona almeno in Firefox: http://jsfiddle.net/boldewyn/bbPLp/ – Boldewyn

0

Codifica lo stato di righe aperte/chiuse in un formato stringa di query (come "open = row1 + row5 + row10") e passa questa stringa in un url a una finestra appena aperta (come "host.com/blah. html? aperto = row1 + row5 + row10"). Nella pagina di destinazione, nella funzione onload, esaminare l'oggetto posizione ed espandere nuovamente queste righe.

0

È inoltre possibile utilizzare JavaScript per accedere alla finestra popup e chiamare funzioni come "hideRow (x)". Aggiungerò un esempio migliore quando arrivo a casa (iPod touch non è divertente digitare il codice)

0

Ti stai solo nascondendo/mostrando le righe con display: none ;? Come stai caricando la pagina popup? Se si sta ricaricando nuovamente la pagina, è possibile utilizzare AJAX per passare un set di dati alla pagina di destinazione.

Assegnare un ID univoco a ciascuna riga e per ogni riga espansa, aggiungere l'ID della riga in un array. Passa l'array o l'oggetto come membro dati tramite AJAX quando viene chiamata la funzione di anteprima di stampa, quindi espandi le righe applicabili nella funzione di callback in caso di caricamento della pagina.

Problemi correlati