1

「保存しやすい」バージョンのWebページを作成するJavascriptコードが少しあります。

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

「htmlPage」は、すべてのjavascript参照、異なるヘッダー画像参照のセットなどが取り出されたページの基本的なhtmlです。

すべてがポップアップウィンドウに完全に表示され、JavaScriptは実行されません。[ファイル]->[名前を付けて保存]をクリックすると、保存されたファイルが親ウィンドウとそのすべてのJavaScriptであり、子ウィンドウのトレースはありません。誰かがこの問題を解決する方法を知っていますか?子ウィンドウのみを保存したい。

ありがとう、-Kraryal

4

4 に答える 4

5

私も同様の状況にありました(しかし、完全に諦めたくありませんでした)。ユーザーにテキストファイル(私の場合はカンマ区切りの値)としてダウンロードしてもらいたい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 /plainMIMEタイプを使用することもできます。

//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をサポートする唯一のバージョンであり、使用できる場所に一連の制限があります。IEの場合は、execCommandを参照してください。

このtek-tipスレッドデータURIスキームに関するウィキペディアの記事に感謝します。

于 2009-06-18T19:42:28.357 に答える
2

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

「クレンジングされた」バージョンが必要な場合は、サーバー上でそのバージョンを生成し、そのURLを最初のパラメーターとしてポップアップを開く必要があります。

于 2009-05-25T01:46:45.803 に答える
1

Windows / IEのみのバージョンについては、こちらを参照してください:http: //p2p.wrox.com/javascript-how/3193-how-do-you-save-html-page-your-local-hd.html

ひどいことはわかっていますが、IE専用のイントラネットのような場合に備えて...

于 2009-05-25T02:20:04.147 に答える
0

残念ながら、質問にコメントを追加するのに十分な評判がないようですので、ここに追加します。

このJavaScriptは、InternetExplorerとSafariの両方にデプロイされます。ホスティングアプリケーションは、常にローカルファイルシステムにアクセスできるとは限りません。

ユーザーは、作業中のページをマークアップして、後で印刷または電子メールで送信できるように保存できます。実際にメールで送信できるように、単一ファイルのアーカイブとして保存するように指示します。保存ダイアログはそれを行うことができ、ユーザーはアクセス権のある場所にファイルを置くことができるので、それを使用しました。

新しいhtmlをjavascriptからローカルディレクトリに書き込むのが簡単な方法のようですが、常にそうできるとは限りません。他のアイデアはありますか?これまでの助けに感謝します。

于 2009-05-25T02:45:12.973 に答える