2

Web ページに追加される Javascript ファイル (いくつかの機能を実行する) が既にあります。ここで、Javascript で Web ページ全体とその html タグ、画像、外部 Javascript ファイル、および外部 css ファイルを収集する必要があります。ここでは Jquery/その他の外部ライブラリを使用したくありません。

私の動機は、Web ページ全体を取得して保存し、元のページと同じように表示することです。

これはJavascriptで可能ですか?

どんな助けでも大歓迎です。

4

1 に答える 1

1

簡単な答え - いいえ

いいえ、JavaScript では、特に「保存」の部分では不可能です。JavaScript には、ブラウザー環境 (ここではこれを想定しています) でのファイル アクセス権がないためです。 .


長い答え - あなたが本当にしなければならないなら: 長くて曲がりくねった道...

適切なコンテンツのロード

最初に、ページを静的な状態 (最初のページの読み込み時にサーバーから送信される) で取得するか、現在レンダリングされている状態 (ブラウザーでレンダリングされた後) でフェッチするかを決定する必要があります。実行され、ページにコンテンツが追加された可能性があります)

リソースのロード

次に、DOM のすべての要素を繰り返し処理し、すべての外部リソース (CSS ファイルで参照されているものを含む) をフェッチする必要があります。

おそらく、リクエストで HTML またはプレーンテキストの MIME タイプを使用してすべてのリソースを取得する必要があります。そうしないと、ブラウザーがエンドユーザーのポップアップで目に見えるダウンロードをトリガーし、透過的なダウンロードがまったく実行されない可能性があります。

すべての参照の更新

次に、「ダウンロードした」コンテンツをどのように整理するか、リソースをどこに配置するか、競合を避けるためにリソースに名前を付ける方法を理解する必要があります。

完了したら、すべての DOM 要素を再度反復処理し、ローカル リソースの代わりにローカル リソースのパスを使用するように参照を更新する必要があります。

コンテンツをディスクに書き込む

最後に、ブラウザのカスタム API またはHTML5 ファイル システム APIを使用して、これらすべてのリソースをディスクに保存します。


ヒア・ビー・ドラゴンズ

一部のページには、このようにダウンロードすると適切に動作しないコードが含まれている可能性があるため、これはあなたが望むものを達成することを保証するものではありません. リモート URL からのコンテンツを要求するコード、いくつかのディレクトリ構造とエンドポイントを想定するコード、または変更した可能性のあるリソース名を使用するコードなどがあるかもしれません (奇妙ですが、それほど珍しいことではありません)。

于 2012-07-10T15:04:02.190 に答える