Question

J'ai un peu de code Javascript qui crée une version « sauver amicale » d'une page Web.

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

« htmlPage » est le code html de base de la page avec toutes les références javascript souscrits, un autre ensemble de références images d'en-tête, etc.

Tout affiche parfaitement dans la fenêtre pop-up, sans javascript en cours d'exécution. Lorsque je clique sur « Fichier> Enregistrer sous », le fichier enregistré est la fenêtre parent, ainsi que tous ses javascript, et aucune trace de la fenêtre enfant. Est-ce que quelqu'un sait comment résoudre ce problème? Je veux sauver seulement la fenêtre enfant.

Merci, -Kraryal

Était-ce utile?

La solution

Lorsque vous enregistrez la page, il enregistre le contenu de l'URL d'origine (par exemple comme si vous avez téléchargé une nouvelle copie)

Si vous voulez une version « nettoyée », vous aurez besoin de générer cette version sur le serveur, et ouvrez le menu contextuel avec cette URL comme le premier paramètre.

Autres conseils

J'ai eu une situation similaire (mais n'a pas été disposé à renoncer tout à fait). Je construire une version de sauvegarde conviviale d'une page Web en utilisant Javascript que je veux l'utilisateur de télécharger un fichier texte (valeurs séparées par des virgules, dans mon cas). Je pense que URIs data: peut aider ici.

//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

Dans Firefox, cela ne se déclenche pas une fenêtre même, demande que l'utilisateur si elles veulent enregistrer le fichier, et il enregistre dans un fichier .part. Pas tout à fait idéal, mais au moins il enregistre le fichier sans apparaître une fenêtre inutile.

Sinon, nous pouvons utiliser le text / plain type MIME:

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

Dans Firefox, cela ne pop ouvrir une nouvelle fenêtre, mais il est enregistré par défaut sous forme de texte ASCII, sans aucun des cochonneries de la fenêtre mère ou d'une ligne d'emballage. C'est probablement ce que je vais utiliser.

On dirait que cela ne fonctionnera pas dans IE cependant. IE 8 est la seule version qui prend en charge URIs data:, et il a une execCommand .

Merci à cette fil tek-pointe et < a href = "http://en.wikipedia.org/wiki/Data_URI_scheme" rel = "noreferrer"> article de Wikipedia sur le schéma d'URI de données .

pour Windows / IE seule version voir ici: http://p2p.wrox.com/javascript-how/3193-how-do-you-save-html-page-your-local-hd.html

Je sais, terrible, mais juste au cas où il est pour IE comme une seule intranet ....

Hélas, il semble que j'ai pas assez réputation d'ajouter des commentaires à ma question, donc je vais ajouter ceci ici.

Ce javascript est déployé pour Internet Explorer et Safari. L'application d'hébergement n'a pas toujours accès au système de fichiers local.

Les utilisateurs peuvent marquer la page, ils travaillent avec, puis enregistrez-le pour une impression ultérieure ou par courriel. Nous leur disons de l'enregistrer comme une archive unique fichier de sorte qu'il peut effectivement être courrier. La boîte de dialogue Enregistrer peut le faire, et l'utilisateur peut mettre le fichier quelque part, ils ont un accès t, donc c'est la raison pour laquelle nous l'avons utilisé.

Il semble que la façon simple serait d'écrire le nouveau html du javascript dans le répertoire local, mais nous ne pouvons toujours le faire. D'autres idées? Merci pour l'aide à ce jour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top