L'enregistrement d'une fenêtre enfant enregistre la fenêtre parent à la place (Javascript)

J'ai un peu de code Javascript qui crée une version "sauvegarder" d'une page Web.

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

"HtmlPage" est le html de base de la page avec toutes les références javascript extraites, un ensemble différent de références d'images d'en-tête, etc.

Tout s'affiche parfaitement dans la fenêtre contextuelle, sans javascript en cours d'exécution. Lorsque je clique sur "Fichier-> Enregistrer sous", le fichier enregistré est la fenêtre parentale, avec tout son javascript, et sans trace de la fenêtre enfant. Est-ce que quelqu'un sait comment résoudre ce problème? Je veux enregistrer uniquement la fenêtre enfant.

Merci, -Kibliographique

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

Si vous voulez une version «nettoyée», vous devez générer cette version sur le serveur et ouvrir la fenêtre contextuelle avec cette URL comme premier paramètre.

J'avais une situation similaire (mais je ne voulais pas abandonner complètement). Je crée une version conviviale d'une page Web utilisant Javascript, que je souhaite que l'utilisateur puisse télécharger en tant que fichier texte (valeurs séparées par des virgules, dans mon cas). Je pense que les data: URI peuvent 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 fait pas apparaître une fenêtre même, il suffit de demander à l'utilisateur s'ils veulent enregistrer le fichier et l'enregistre en tant que fichier .part. Pas exactement idéal, mais au moins il enregistre le fichier sans apparaître une fenêtre inutile.

Alternativement, nous pouvons utiliser le type MIME texte / simple:

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

Dans Firefox, cela ouvre une nouvelle fenêtre, mais il est sauvegardé par défaut en tant que texte ASCII, sans aucun élément de la fenêtre parent ou de l'emballage en ligne. C'est probablement ce que j'utiliserai.

Il semble que cela ne fonctionnera pas dans IE cependant. IE 8 est la seule version prenant en charge les data: URI, et une série de restrictions sur l'endroit où elle peut être utilisée. Pour IE, vous pouvez regarder execCommand .

Merci à ce sujet tek-tip et à l'article Wikipedia sur le schéma URI des données .

Pour une version Windows / IE uniquement 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 serait comme un intranet IE-only …

Hélas, il semble que je n'ai pas assez de réputation pour ajouter des commentaires à ma question, alors 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 avec laquelle ils travaillent, puis enregistrez-le pour une impression ou une messagerie ultérieure. Nous leur disons de l'enregistrer en une archive à un seul fichier, de sorte qu'il peut effectivement être un courrier. La boîte de dialogue de sauvegarde peut le faire, et l'utilisateur peut mettre le fichier quelque part, ils ont accès à t, donc c'est pourquoi nous l'avons utilisé.

Il semble que la façon simple serait d'écrire le nouveau html à partir du javascript dans le répertoire local, mais nous ne pouvons pas toujours le faire. D'autres idées? Merci du coup de main jusqu'à présent.