4

jqueryでクライアント側のWebアプリケーションを開発しています

訪問したすべてのページを保存したいので、Cookie を使用します

したがって、保存する要素が 2 つあります。

  • ページの URL
  • ページタイトル

次のようにCookieでデータの作成を開始します。

インデックス.html:

if(!$.cookie("history")){
        var url_history = document.location;
        var title_history = $("html title").text();
        $.cookie("historyURL", url_history);
        $.cookie("historyTITLE", title_history);
    }

anotherPage.html :

var url_history = document.location;
var title_history = $("html title").text();
$.cookie("historyURL", url_history);
$.cookie("historyTITLE", title_history);

問題は、Cookie の新しい値が古い値を上書きすることです。

次のような文字列ではなく、オブジェクトを設定する必要があると思います。

var objHistory = [];
objHistory.push({url:document.location, title: $("html title").text()})
$.cookie("history", objHistory);

今、私は別の問題を抱えています:

Cookie から My Object を取得できません

クッキーからオブジェクトを取得しようとすると、オブジェクトではなく文字列「オブジェクト」が表示されます

オブジェクトを Cookie に設定することはできますか?

お手伝いありがとうございます

4

4 に答える 4

5

オブジェクトはいつでも JSON に文字列化できます。

var jsonHistory = JSON.stringify(objHistory);
$.cookie("history", jsonHistory);

編集

簡単なデモ (Chrome と Firefox でテスト済み):

        (function(){
            var o = JSON.parse('{"id":1,"value":"code.google.com"}');
            var e = 'Thu Nov 10 2012 15:44:38';
            document.cookie = 'myObj='+ JSON.stringify(o) +';expires=' + e;
        })()
于 2012-11-08T13:53:28.420 に答える
5

Cookie (制限された 4K サイズ) は、訪問したページの配列を保存しようとする最後の場所です。Cookie は、制限があるため、私が使用しようとする最後の保存方法です。HTML5 を使用している場合、この目的で localStorage を使用しないのはなぜですか?

チュートリアル: http://www.w3schools.com/html/html5_webstorage.asp

localStorage は、STRING のキーと値のペアのみを処理します。回避策として、オブジェクトを格納する前に文字列化して、後で取得するときに解析することができます。

var testObject = { 'URL': 1, 'TITLE': 2 };
localStorage.setItem('testObject', JSON.stringify(testObject));
var retrievedObject = localStorage.getItem('testObject');
console.log('retrievedObject: ', JSON.parse(retrievedObject));
于 2012-11-08T14:02:01.850 に答える
-1

STRINGSのみを保存できます。非常に限られたタイプの文字列。このような値を格納するには、いくつかの区切り記号を使用する必要があります。Cookieで使用できる文字を確認してください。

于 2012-11-08T14:06:13.350 に答える