2010-01-28 16 views
10

Ich muss in der Lage sein, die aktuelle Webseite in ein neues Popup-Fenster für eine Druckvorschau zu kopieren. Es gibt ein Raster auf der Seite mit untergeordneten Elementen. Wenn sie also eine der Zeilen erweitern, um die untergeordneten Zeilen zu sehen, muss ich dies im neuen Fenster anzeigen.Aktuelle Webseite in ein neues Fenster kopieren

Ist das möglich?

Ich habe derzeit das Popup-Fenster öffnen die gleiche Seite, aber alle keine der Zeilen sind erweitert.

Antwort

8

Vielleicht macht dies den Trick (in IE und Firefox, nicht in Opera. Ich weiß nicht über 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(); 

(man beachte den Unterschied zwischen window.open() und document.open()!)

Allerdings verlieren Sie alle thingies benutzerdefinierten DOM, wie Event-Handler und so weiter. Nichtsdestotrotz könnte es funktionieren, wenn Sie nur Ihren HTML-Code kopieren möchten.

+0

Ich versuchte dies (mit jQuery) ... aber da die Zeilen asynchron erweitert wird, nimmt die neue Seite den HTML-Code nicht auf. – Martin

+1

Ich habe eine JSFiddle erstellt, die zumindest in Firefox funktioniert: http://jsfiddle.net/boldewyn/bbPLp/ – Boldewyn

0

Den Status von offenen/geschlossenen Zeilen in ein Abfragezeichenfolgenformat (wie "open = row1 + row5 + row10") codieren und diese Zeichenfolge in einer URL an ein neu geöffnetes Fenster übergeben (wie "host.com/blah. html? open = row1 + row5 + row10 "). Überprüfen Sie auf der Zielseite in der Funktion onload das Standortobjekt und erweitern Sie diese Zeilen erneut.

0

Sie können auch JavaScript verwenden, um auf das Popup-Fenster zuzugreifen und Funktionen wie "hideRow (x)" aufzurufen. Ich werde ein besseres Beispiel hinzufügen, wenn ich nach Hause komme (iPod touch macht keinen Spaß Code eingeben)

0

Versteckst du nur deine Reihen mit display: none;? Wie laden Sie die Popup-Seite hoch? Wenn Sie die Seite erneut laden, können Sie mit AJAX eine Datenmenge an die Zielseite übergeben.

Weisen Sie jeder Zeile eine eindeutige ID zu, und fügen Sie für jede Zeile, die erweitert wird, die ID der Zeile in ein Array ein. Übergeben Sie dieses Array oder Objekt als Datenelement über AJAX, wenn die Druckvorschaufunktion aufgerufen wird, und erweitern Sie die entsprechenden Zeilen in der Onsuccess-Callback-Funktion, nachdem die Seite geladen wurde.

Verwandte Themen