2

JavaScript (具体的には、JavaScript 変数とそのコンテンツ) を完全な HTTP リクエストに耐えさせることは可能ですか? 非表示のフォーム フィールドや HTML に関連するものをまったく使用せずに、ページが変更されてもクライアント側で情報を「キャッシュ」/保持したいと考えています。

これは可能ですか?

編集:私が意味することのユースケースを追加させてください。

  1. ページ /HomePage の一部として読み込んだarrayOfPersonsという JavaScript 配列があり、クライアント側に 1,000 個のオブジェクトが含まれているとします。
  2. ここで、ユーザーはページを切り替えて、まったく新しいページ /MyAccount をブラウザーに読み込みます
  3. 私の目標:ユーザーがまったく新しいページ /MyAccount を要求した後も、ページ /HomePage に読み込んだarrayOfPersonsを利用できるようにします。

私の言いたいことが明確になることを願っています。ありがとうございました!

4

7 に答える 7

5

Nickの答えに追加するだけで、さまざまなブラウザが何らかの形で永続ストレージのアイデアをサポートしています。昨年、すべてのブラウザでこれらを正規化するための多くの努力がなされてきました。

これは、HTML 5のDOMストレージ、MicrosoftのUserData、Session Cookies、およびwindow.name(JSONシリアル化をwindow.name can ストア文字列としてのみ使用する)をラップする1つのライブラリです。

window.nameこれは、(Opera 9以降、IE6以降、Firefox 1.5以降、Safari [3だと思います)のみに焦点を当てた別の方法です。

これは、(フラッシュ)ファイルを使用して最も多くのクロスブラウザーサポートを提供するjQueryプラグイン.swfです(ただし、そうするように構成すると、ネイティブソリューションをサポートします)。私はそれを保証することはできませんが、このjQuery-lovin'コミュニティについて言及する必要があります。

于 2009-09-24T12:46:05.557 に答える
3

はい、可能です。セッション全体を通して(クライアント側で)ページの状態を維持するために使用したちょっとしたハックです。

セッション全体で更新されることはなく、その中に iframe しかない基本ページ (マスターなど) があります。そして、すべてのアプリケーション ページがそのフレームに読み込まれます。

状態情報をそのマスター ページに JS オブジェクトとして保存します。また、iframe 内の子ページからマスター ページ (親) の javacript オブジェクトにアクセスできます。そして、それはクライアント側のセッションを通じて維持されます。

これが最も簡単な方法です。そして、それはかなりきれいに機能します。

于 2009-09-24T09:11:45.637 に答える
2

便利なものを見つけた

JSOC: JavaScript オブジェクトキャッシュ

JSOC フレームワークは、プラグ可能で拡張可能なオープン ソースの JavaScript 用クライアント側キャッシング フレームワークです。

JSOC は、Web 開発者に、JavaScript 対応のブラウザー内で一般的なキャッシュ技術 (追加、置換、削除、フラッシュなど) を実行する簡単な方法を提供します。

JSOC はスタンドアロンの JavaScript モジュールであるため、JSOC を Web 開発プロジェクトに組み込むには、スクリプト参照を含め、一般的なキャッシュ メソッドを使用するだけです。低レベルのメソッドが JSOC JavaScript モジュールに含まれているため、開発者は目の前の Web 開発タスクに集中できます。

于 2009-09-24T09:06:25.957 に答える
2

新しいブラウザーはDOM ストレージをサポートしており、ページ間で保持できる任意のデータを保存できます。非表示の Flash アプリを使用して物事を記憶することもできます。検出を処理するDojo Storageなどのライブラリがあるため、データを保存するだけで、利用可能なものはすべて使用されます。

次のページのすべての Javascript 変数が自動的に保存されるわけではありません。ユーザーがページを離れたときに必要なものを保存するには、onunload ハンドラーを追加する必要があります。

于 2009-09-24T09:16:13.550 に答える
0

1 つの可能性は、フレームセットを使用してそこにオブジェクトを保持することです。

window.name
document.cookie
location.search

document.cookie同じドメイン内のページの呼び出し間でデータを保存する標準的な方法であり、アクセスと有効期間を制御するメカニズムを提供します。

を使用する場合window.name、データはブラウザ インスタンスの存続期間中保持されます。

使用window.locationはよりトリッキーで、リンクを明示的に変更してデータと共に送信する必要があります (これは、イベント委任を使用して簡単に行うことができます)。

于 2009-09-24T12:51:23.563 に答える
0

フレームセットを使用すると、javascript を永続化する場所が得られますが、ページ全体の読み込みが行われます...そうではないと思います。

Cookie はデータの「永続化」にも役立つ可能性がありますが、これはあなたが求めたものではありません。

于 2009-09-24T09:04:12.357 に答える
0

私があなたを正しく理解していれば、必要なのは、独自のキャッシュ関数をすべてのフォームの onSubmit とすべてのリンクの onClick に追加することだけです。

var cachedpages;
$("A").onclick(function(){
    url = $(this).attr('href'); // maybe hash?
    if (cachedpages[url]) {
         // replacing all html
    } else {
         $.get(url, function(data){
              cachedpages[url] = data;
              // replacing all html
         });
    }
    return false;
});
于 2009-09-24T09:08:54.923 に答える