Frage

Ich habe ein bisschen von Javascript-Code, der ein „speichert freundliche“ Version einer Webseite erstellt.

child = window.open("","child");
child.document.write(htmlPage);

„htmlpage“ ist der grundlegende HTML-Code der Seite mit allen Javascript Referenzen herausgenommen, ein anderer Satz von Header-Bildern Referenzen usw.

Alles zeigt perfekt im Popup-Fenster, ohne Javascript ausgeführt wird. Wenn ich auf „File-> Save As“, ist die gespeicherte Datei das übergeordnete Fenster, zusammen mit all seinen Javascript und ohne eine Spur des Kindes Fenster. Wer weiß, wie dieses Problem zu lösen? Ich will nur das Kind Fenster speichern.

Danke, -Kraryal

War es hilfreich?

Lösung

Wenn Sie die Seite speichern wird es die ursprüngliche URL Inhalte speichern (z, als ob Sie eine neue Kopie heruntergeladen)

Wenn Sie eine „gesäuberte“ Version mögen, müssen Sie diese Version auf dem Server erzeugen, und öffnen Sie das Popup mit dieser URL als erster param.

Andere Tipps

Ich hatte eine ähnliche Situation (aber nicht bereit war, ganz aufgeben). Ich bin Bau einer speichern freundliche Version einer Webseite mit Javascript, die ich möchte der Benutzer als Textdatei (kommagetrennte Werte, in meinem Fall) zum Download bereit. Ich denke, data: URIs kann hier helfen.

//construct the csvOutput in Javascript first
var popup = window.open("data:application/octet-stream," + encodeURIComponent(csvOutput), "child");
//no need to document.write() anything in the child window

In Firefox, das ist Pop-up kein Fenster selbst, fragt nur den Benutzer, wenn sie die Datei speichern möchten, und speichert es als .part Datei. Nicht gerade ideal, aber zumindest speichert es die Datei ohne ein unnötiges Fenster Aufspringen.

Alternativ können wir den text / plain MIME-Typ:

//construct the csvOutput in Javascript first
var popup = window.open("data:text/plain;charset=utf-8," + encodeURIComponent(csvOutput), "child");

In Firefox, dies öffnet Pop ein neues Fenster, aber dann ist es standardmäßig als ASCII-Text, ohne dass des cruft des übergeordneten Fensters oder einen Zeilenumbruchs gespeichert. Dies ist wahrscheinlich das, was ich verwenden soll.

Es sieht aus wie das wird aber nicht in IE arbeiten. IE 8 ist die einzige Version, die data: URIs unterstützt, und es hat eine execCommand .

Dank dieser tek-End-Gewinde und der < a href = "http://en.wikipedia.org/wiki/Data_URI_scheme" rel = "noreferrer"> Wikipedia-Artikel über das Daten URI-Schema .

für eine Windows / IE-Version siehe hier: http://p2p.wrox.com/javascript-how/3193-how-do-you-save-html-page-your-local-hd.html

Ich weiß, schrecklich, aber nur für den Fall, es ist für wie ein IE-only Intranet ....

Ach, es scheint, dass ich nicht genug Ruf habe Kommentare zu meiner Frage an, so werde ich diese hier hinzufügen.

Dieses JavaScript ist für Internet Explorer und Safari zum Einsatz. Die Host-Anwendung nicht immer Zugriff auf das lokale Dateisystem.

Die Benutzer die Seite markieren können sie arbeiten, ist es dann für den späteren Druck speichern oder per E-Mail. Wir sagen ihnen, es als Single-File-Archiv zu speichern, so dass es eigentlich Mail sein kann. Der Speichern-Dialog kann das tun, und der Benutzer die Datei irgendwo setzen können sie den Zugang t haben, ist also, warum wir daran gewöhnt.

Es scheint, die einfache Möglichkeit, die neue HTML vom Javascript in dem lokalen Verzeichnis zu schreiben wäre, aber wir können das nicht immer tun. Jede andere Ideen? Danke für die Hilfe bisher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top