0

クリック時にCookieを設定およびクリアする(divのスタイルを記憶する)作業コードがあります:

var originalAttributes = $('.aaa').attr('style');
$('.aaa').each(function(){
    var d = $(this),
    id = d.attr('id'),
    storedStyle = $.cookie('aaaStyle' + id);
    if (storedStyle != undefined){   //style stored
        d.attr('style', storedStyle);
    }
});

//mouse event functions for class="aaa"

$('#save').click(function () {
    $('.aaa').each(function(){
        var d = $(this),
        id = d.attr('id'),
        style = d.attr('style');
        if (style != originalAttributes){   //style changed
            $.cookie('aaaStyle' + id, style, { expires: 30 });
        }
    });

});

$('#clear').click(function () {
    // unset changes
    $('.aaa').attr('style',originalAttributes).each(function(){
        var d = $(this),
        id = d.attr('id');
        $.cookie('aaaStyle' + id, null);
    });
});

http://jsfiddle.net/z8KuE/31/

これで発生する唯一の問題は、同じクラスの多数の div を処理する必要がある場合です。Cookie のサイズは 500kb 以上になる可能性があります。ブラウザーは、Cookie ごとに 4kb のみをサポートします。

問題は、この関数と jquery cookie プラグインを使用して、この問題をどのように回避できるかということです。-gzipまたは/およびCookieを十分に小さな部分に分割しますか?

(いずれにしても、パフォーマンスを高速化するために何らかの圧縮を行うことは良いことです (可能であれば - しかし、そうでない場合は問題ではありません))

編集:これと同じ「保存-クリア」機能をローカルストレージでどのように実現できますか?

edit2: user2111737によって解決されました ( http://jsfiddle.net/z8KuE/33/ ) - Cookie の代わりにローカル ストレージを使用し、Cookie プラグインなしで動作します。

4

1 に答える 1

1

サーバー側でアクセスする必要がない場合、または最終的に xmlhttprequest を使用してこのデータをサーバーに手動で送信することが可能である場合は、localStorage、最終的には Cookie の代わりに sessionStorage を試す必要があると思います。他のサイト)。圧縮について - カスタム形式について考え、格納されたデータをその場で使用して html コードを再構築することができます。このクラスが絶対に何でもよいとは思えません-数値またはさらに良い-1文字として保存できると思います。1つの記号として保存された255のクラスを提供します

于 2013-10-01T15:26:59.957 に答える