子ウィンドウを保存すると、代わりに親ウィンドウを保存する(Javaスクリプト)

StackOverflow https://stackoverflow.com/questions/904893

質問

私は、ウェブページの「友好保存」バージョンを作成するJavaScriptコードのビットを持っています。

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

「HTMLページの」とは、取り出しすべてのJavaScript参照を含むページの基本HTML、ヘッダ画像の参照などの異なるセットである。

すべてが動作していないJavaScriptを使用して、ポップアップ・ウィンドウに完全に表示されます。 私は「ファイル>名前を付けて保存」をクリックすると、保存したファイルは、そのジャバスクリプトのすべてと一緒に、子ウィンドウの痕跡と、親ウィンドウです。誰もがこの問題を解決する方法を知っていますか?私は唯一の子ウィンドウを保存したい。

おかげで、 -Kraryal

役に立ちましたか?

解決

あなたがページを保存すると、元のURLのコンテンツを(例えば、あなたが新しいコピーをダウンロードしたかのように)保存されます。

あなたは「清め」バージョンをしたい場合は、

は、サーバー上でそのバージョンを生成する必要があり、最初のパラメータとしてそのURLでポップアップを開くでしょう。

他のヒント

私は似たような状況があった(ただし、完全にあきらめて喜んではなかったです)。私は、ユーザーが(私の場合はカンマ区切り)テキストファイルとしてダウンロードしたいJavascriptを使用してWebページの保存に適したバージョンを構築しています。私はdata:のURIがここに助けることができると思います。

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

Firefoxでは、これはちょうど彼らがファイルを保存したい場合は、ユーザーを要求し、.partファイルとして保存し、でも、ウィンドウをポップアップ表示しません。まさに理想的な、しかし少なくとも、それが不要なウィンドウをポップアップせずにファイルを保存しません。

また、私たちは、text / plainのMIMEタイプを使用することができます:

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

Firefoxでは、これはポップで新しいウィンドウを開くんが、それは親ウィンドウまたは任意の行折り返しの嫌なもののいずれかなしに、ASCIIテキストとしてデフォルトで保存されます。これは私が使用するものを考えられます。

これは、しかし、IEで動作しません。このように見えます。 IE 8はdata: URIをサポートする唯一のバージョンであり、それは<のhref =「http://msdn.microsoft.com/en-us/library/cc848897%28VS.85%29.aspx」のrel = "noreferrerを持っています「>制限のシリーズは、それが使用できる場所にを。 IEの場合は、 execCommandするに見えるかもしれません。

この TEK-先端スレッドとのおかげで< href = "http://en.wikipedia.org/wiki/Data_URI_scheme" のrel = "noreferrer">データURIスキームの上のWikipediaの記事ます。

は、Windows / IEのみのバージョンについてはこちらをご覧ください:<のhref = "http://p2p.wrox.com/javascript-how/3193-how-do-you-save-html-page-your-local- hd.html」のrel = "nofollowをnoreferrer"> http://p2p.wrox.com/javascript-how/3193-how-do-you-save-html-page-your-local-hd.htmlする

タグ....私はひどい、知っているが、念のためにそれはIEのみのイントラネットなどのためです
ああ、それは私が私の質問にコメントを追加するには十分な評判を持っているようですので、私はここにこれを追加します。

このjavascriptのは、Internet ExplorerとSafariの両方のために配備されています。ホストするアプリケーションは、常にローカルファイルシステムへのアクセス権を持っていません。

ユーザーが作業しているページをマークアップすることができ、その後の印刷または電子メールで送信するためにそれを保存します。それは実際にメールできるように、我々はシングルファイルアーカイブとして保存するためにそれらを教えてください。保存ダイアログがそれを行うことができ、そして我々はそれを使用する理由ですので、ユーザは、どこかに彼らがアクセスtを持ったファイルを置くことができます。

単純な方法ではJavaScriptからローカルディレクトリに新しいHTMLを書くことであろうと思われるが、我々は常にそれを行うことはできません。他のアイデア?これまでのご協力に感謝いたします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top